Google Maps V3 setDirections() rappel
Est-il une possibilité d'obtenir un rappel lorsque setDirections() est exécutée?
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places&language=<?=SYS_LANG;?>"></script>
<script type="text/javascript">
$(document).ready(function(){
var destination = '<?=$_POST['address'];?>';
var directionsDisplay = new google.maps.DirectionsRenderer({ draggable: true });
var directionsService = new google.maps.DirectionsService();
var geocoder;
var infoWindowContent = '<div id="gmap_infowindow">infocontent</div>';
var map;
var marker;
var position = new google.maps.LatLng(46.80193957664, 11.41754150390625);
function calcRoute(start, end) {
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if(status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
function codeAddress(address) {
if(geocoder) {
geocoder.geocode({ 'address': address }, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
calcRoute(results[0].geometry.location, position);
document.getElementById('gmap_input').value = address;
}
});
}
}
function initialize() {
if(destination) geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById('gmap_map'), {
center: new google.maps.LatLng(46.80193957664, 11.41754150390625),
zoom: 9,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("gmap_directions"));
var autocomplete = new google.maps.places.Autocomplete(document.getElementById('gmap_input'));
autocomplete.bindTo('bounds', map);
var infowindow = new google.maps.InfoWindow({ maxWidth: 240 });
var marker = new google.maps.Marker({
position: position,
map: map,
title:"Title"
});
infowindow.setContent(infoWindowContent);
infowindow.open(map, marker);
if(destination) codeAddress(destination);
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
}
calcRoute(place.geometry.location, position);
});
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
$('#article').mCustomScrollbar('vertical', 350, 'easeOutCirc', 1.05, 'auto', 'yes', 'no', false);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$('#gmap_map').css('height', '310px');
$('#article form').submit(function(event){ event.preventDefault(); });
});
</script>
excellente explication et réponse: < & lt; a href="http://stackoverflow.com/questions/4657860/google-maps-saving-dragable-directions" title="google maps économie dragable directions">stackoverflow.com/questions/4657860/...>
OriginalL'auteur DIDi | 2011-08-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lier un EventListener pour
directions_changed
à votre directionsDisplay:N'est que ce que vous où après?
sry, le groupe est défini par "directionsDisplay.setPanel(element);"
Ne devraient-ils pas de changement à la fois?
Peut-être, mon problème est que je dois recharger un jQuery Scroll plugin en raison de la directions du panneau. Et cela ne fonctionne pas avec ces événements. Je pense que l'événement est déclenché avant tout est chargé, de sorte que le Défilement plugin n'a pas de devient le nouveau contenu de la hauteur...
Avez-vous essayé un court délai?
OriginalL'auteur polarblau