You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.6 KiB
163 lines
4.6 KiB
3 years ago
|
/* ------------------------------------------------------------------------------
|
||
|
*
|
||
|
* # Location pickers
|
||
|
*
|
||
|
* Specific JS code additions for picker_location.html page
|
||
|
*
|
||
|
* Version: 1.1
|
||
|
* Latest update: Aug 10, 2016
|
||
|
*
|
||
|
* ---------------------------------------------------------------------------- */
|
||
|
|
||
|
$(function() {
|
||
|
|
||
|
|
||
|
// Basic examples
|
||
|
// ------------------------------
|
||
|
|
||
|
// Basic functionality
|
||
|
$('.locationpicker-default').locationpicker({
|
||
|
radius: 150,
|
||
|
scrollwheel: false,
|
||
|
zoom: 10
|
||
|
});
|
||
|
|
||
|
|
||
|
// Manipulating from callback
|
||
|
$('.locationpicker-manipulate').locationpicker({
|
||
|
location: {
|
||
|
latitude: 46.15242437752303,
|
||
|
longitude: 2.7470703125
|
||
|
},
|
||
|
radius: 300,
|
||
|
onchanged: function(currentLocation, radius, isMarkerDropped) {
|
||
|
var mapContext = $(this).locationpicker('map');
|
||
|
mapContext.map.setZoom(20);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
// Binding UI with the widget
|
||
|
$('#us2').locationpicker({
|
||
|
location: {latitude: 44.1219256, longitude: 15.2357175},
|
||
|
radius: 300,
|
||
|
scrollwheel: false,
|
||
|
inputBinding: {
|
||
|
latitudeInput: $('#us2-lat'),
|
||
|
longitudeInput: $('#us2-lon'),
|
||
|
radiusInput: $('#us2-radius'),
|
||
|
locationNameInput: $('#us2-address')
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
// Subscribing for events
|
||
|
$('#us3').locationpicker({
|
||
|
location: {latitude: 47.494293, longitude: 19.054151899999965},
|
||
|
radius: 300,
|
||
|
scrollwheel: false,
|
||
|
inputBinding: {
|
||
|
latitudeInput: $('#us3-lat'),
|
||
|
longitudeInput: $('#us3-lon'),
|
||
|
radiusInput: $('#us3-radius'),
|
||
|
locationNameInput: $('#us3-address')
|
||
|
},
|
||
|
enableAutocomplete: true,
|
||
|
onchanged: function(currentLocation, radius, isMarkerDropped) {
|
||
|
alert("Location changed. New location (" + currentLocation.latitude + ", " + currentLocation.longitude + ")");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
//
|
||
|
// Typeahead address picker
|
||
|
//
|
||
|
|
||
|
// Instantiate the addressPicker suggestion engine (based on bloodhound)
|
||
|
var addressPicker = new AddressPicker({
|
||
|
map: {
|
||
|
id: '#map',
|
||
|
scrollwheel: false,
|
||
|
zoom: 10,
|
||
|
center: new google.maps.LatLng(53.5510846, 9.99368179999999)
|
||
|
},
|
||
|
reverseGeocoding: true,
|
||
|
autocompleteService: {
|
||
|
types: ['(cities)'],
|
||
|
componentRestrictions: {
|
||
|
country: 'DE'
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Instantiate the typeahead UI
|
||
|
$('#address').typeahead(null, {
|
||
|
displayKey: 'description',
|
||
|
limit: 20,
|
||
|
source: addressPicker.ttAdapter()
|
||
|
});
|
||
|
|
||
|
// Bind event
|
||
|
addressPicker.bindDefaultTypeaheadEvent($('#address'));
|
||
|
|
||
|
// When address is selected
|
||
|
$(addressPicker).on('addresspicker:selected', function (event, result) {
|
||
|
Prism.highlightAll();
|
||
|
html = ["Address: " + result.address()]
|
||
|
html.push("Latitude: " + result.lat())
|
||
|
html.push("Longitude: " + result.lng())
|
||
|
html.push("Long names:")
|
||
|
result.addressTypes().forEach(function(type) {
|
||
|
html.push(" " + type + ": " + result.nameForType(type))
|
||
|
});
|
||
|
html.push("Short names:")
|
||
|
result.addressTypes().forEach(function(type) {
|
||
|
html.push(" " + type + ": " + result.nameForType(type, true))
|
||
|
});
|
||
|
$('#response code').html( html.join('\n'));
|
||
|
});
|
||
|
|
||
|
|
||
|
//
|
||
|
// Autocomplete address picker
|
||
|
//
|
||
|
|
||
|
// Initialization
|
||
|
var addresspickerMap = $("#addresspicker_map").addresspicker({
|
||
|
regionBias: "fr",
|
||
|
updateCallback: showCallback,
|
||
|
mapOptions: {
|
||
|
zoom: 10,
|
||
|
center: new google.maps.LatLng(48.856614, 2.3522219000000177),
|
||
|
scrollwheel: false,
|
||
|
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||
|
},
|
||
|
elements: {
|
||
|
map: "#map2"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Add markers
|
||
|
var gmarker = addresspickerMap.addresspicker("marker");
|
||
|
gmarker.setVisible(true);
|
||
|
addresspickerMap.addresspicker("updatePosition");
|
||
|
|
||
|
// Reverse Geocode after Marker Drag
|
||
|
$('#reverseGeocode').change(function(){
|
||
|
$("#addresspicker_map").addresspicker("option", "reverseGeocode", ($(this).val() === 'true'));
|
||
|
});
|
||
|
|
||
|
// Callback
|
||
|
function showCallback(geocodeResult, parsedGeocodeResult){
|
||
|
$('#response2 code').text(JSON.stringify(parsedGeocodeResult, null, 4));
|
||
|
Prism.highlightAll();
|
||
|
}
|
||
|
|
||
|
// Update zoom field
|
||
|
var map = $("#addresspicker_map").addresspicker("map");
|
||
|
google.maps.event.addListener(map, 'idle', function(){
|
||
|
$('#zoom').val(map.getZoom());
|
||
|
});
|
||
|
|
||
|
});
|