Origin commit
This commit is contained in:
109
inc/vendors/cmb2-plugins/cmb2/custom-fields/map/js/script.js
vendored
Executable file
109
inc/vendors/cmb2-plugins/cmb2/custom-fields/map/js/script.js
vendored
Executable file
@@ -0,0 +1,109 @@
|
||||
(function( $ ) {
|
||||
'use strict';
|
||||
|
||||
var maps = [];
|
||||
|
||||
$( '.cmb-type-opal-map' ).each( function() {
|
||||
initializeMap( $( this ) );
|
||||
});
|
||||
|
||||
function initializeMap( mapInstance ) {
|
||||
var searchInput = mapInstance.find( '.opal-map-search' );
|
||||
var mapCanvas = mapInstance.find( '.opal-map' );
|
||||
var latitude = mapInstance.find( '.opal-map-latitude' );
|
||||
var longitude = mapInstance.find( '.opal-map-longitude' );
|
||||
var latLng = new google.maps.LatLng( 54.800685, -4.130859 );
|
||||
var zoom = 5;
|
||||
|
||||
// If we have saved values, let's set the position and zoom level
|
||||
if ( latitude.val().length > 0 && longitude.val().length > 0 ) {
|
||||
latLng = new google.maps.LatLng( latitude.val(), longitude.val() );
|
||||
zoom = 17;
|
||||
}
|
||||
|
||||
// Map
|
||||
var mapOptions = {
|
||||
center: latLng,
|
||||
zoom: zoom
|
||||
};
|
||||
var map = new google.maps.Map( mapCanvas[0], mapOptions );
|
||||
|
||||
latitude.on('change', function() {
|
||||
map.setCenter( new google.maps.LatLng( latitude.val(), longitude.val() ) );
|
||||
});
|
||||
|
||||
longitude.on('change', function() {
|
||||
map.setCenter( new google.maps.LatLng( latitude.val(), longitude.val() ) );
|
||||
});
|
||||
|
||||
// Marker
|
||||
var markerOptions = {
|
||||
map: map,
|
||||
draggable: true,
|
||||
title: 'Drag to set the exact location'
|
||||
};
|
||||
var marker = new google.maps.Marker( markerOptions );
|
||||
|
||||
//if ( latitude.val().length > 0 && longitude.val().length > 0 ) {
|
||||
marker.setPosition( latLng );
|
||||
// }
|
||||
|
||||
// Search
|
||||
var autocomplete = new google.maps.places.Autocomplete( searchInput[0] );
|
||||
autocomplete.bindTo( 'bounds', map );
|
||||
|
||||
google.maps.event.addListener( autocomplete, 'place_changed', function() {
|
||||
var place = autocomplete.getPlace();
|
||||
if ( ! place.geometry ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( place.geometry.viewport ) {
|
||||
map.fitBounds( place.geometry.viewport );
|
||||
} else {
|
||||
map.setCenter( place.geometry.location );
|
||||
map.setZoom( 17 );
|
||||
}
|
||||
|
||||
marker.setPosition( place.geometry.location );
|
||||
|
||||
latitude.val( place.geometry.location.lat() );
|
||||
longitude.val( place.geometry.location.lng() );
|
||||
});
|
||||
|
||||
$( searchInput ).keypress( function( event ) {
|
||||
if ( 13 === event.keyCode ) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
// Allow marker to be repositioned
|
||||
google.maps.event.addListener( marker, 'drag', function() {
|
||||
latitude.val( marker.getPosition().lat() );
|
||||
longitude.val( marker.getPosition().lng() );
|
||||
});
|
||||
|
||||
maps.push( map );
|
||||
}
|
||||
|
||||
// Resize map when meta box is opened
|
||||
if ( typeof postboxes !== 'undefined' ) {
|
||||
postboxes.pbshow = function () {
|
||||
var arrayLength = maps.length;
|
||||
for (var i = 0; i < arrayLength; i++) {
|
||||
var mapCenter = maps[i].getCenter();
|
||||
google.maps.event.trigger( maps[i], 'resize' );
|
||||
maps[i].setCenter( mapCenter );
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// When a new row is added, reinitialize Google Maps
|
||||
$( '.cmb-repeatable-group' ).on( 'cmb2_add_row', function( event, newRow ) {
|
||||
var groupWrap = $( newRow ).closest( '.cmb-repeatable-group' );
|
||||
groupWrap.find( '.cmb-type-opal-map' ).each( function() {
|
||||
initializeMap( $( this ) );
|
||||
});
|
||||
});
|
||||
|
||||
})( jQuery );
|
||||
Reference in New Issue
Block a user