J'essaie de placer plusieurs marqueurs sur une carte Google (API V3). J'ai regardé les documents Google et aussi ce thread a>. La carte dessine et centres du point d'init mais aucun marqueur ne montre que sur la carte. Firebug ne signale aucune erreur. P> Voici le JS P> <script type="text/javascript">
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(41.056466,-85.3312009),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
//Add 1st marker
var Latlng_0 = new google.maps.LatLng(41.057814980291,-85.329851919709);
var marker_0 = new google.maps.Marker({
position: Latlng_0,
title:"0"});
marker_0.setMap(map);
//Add 2nd marker
var Latlng_1 = new google.maps.LatLng(41.065294480291,-85.330151019708);
var marker_1 = new google.maps.Marker({
position: Latlng_1,
title:"1"});
marker_1.setMap(map);
google.maps.event.addDomListener(window, 'load', initialize);
</script>
3 Réponses :
La raison pour laquelle les marqueurs ne s'affinent pas sont parce que la partie du code est exécutée Essayez d'ajouter le code pour ajouter les marqueurs à l'intérieur de la méthode d'initialisation p> Voir ce jsfiddle ici où les marqueurs montrent http://jsfiddle.net/kvugb/ p> p>
J'utilise ce code. J'espère que cela vous aide:
(function() { window.onload = function() { // Creating a new map var map = new google.maps.Map(document.getElementById("map"), { center: new google.maps.LatLng(41.056466, -85.3312009), disableDefaultUI: false, zoom: 16, mapTypeId: google.maps.MapTypeId.SATELLITE }); // Creating the JSON data var json = [ { "title": "Title 1", "lat": 41.057814980291, "lng": -85.329851919709, "description": "" }, { "title": "Title 2", "lat": 41.057814981000, "lng": -85.8048, "description": "" }, ] var styles = [ { "featureType": "water", "elementType": "geometry.fill", "stylers": [ { "visibility": "on" }, { "color": "#0077bb" }, { "lightness": 70 } ] },{ "featureType": "landscape.natural", "elementType": "geometry.fill", "stylers": [ { "visibility": "on" }, { "saturation": -100 }, { "color": "#699e6b" }, { "lightness": 76 } ] },{ "featureType": "poi.park", "elementType": "geometry.fill", "stylers": [ { "visibility": "off" } ] },{ "featureType": "road.local", "elementType": "geometry.fill", "stylers": [ { "visibility": "on" }, { "color": "#ffffff" } ] } ]; map.setOptions({styles: styles}); // Creating a global infoWindow object that will be reused by all markers var infoWindow = new google.maps.InfoWindow(); // Looping through the JSON data for (var i = 0, length = json.length; i < length; i++) { var data = json[i], latLng = new google.maps.LatLng(data.lat, data.lng); // Creating a marker and putting it on the map var marker = new google.maps.Marker({ position: latLng, map: map, title: data.title }); // Creating a closure to retain the correct data, notice how I pass the current data in the loop into the closure (marker, data) (function(marker, data) { // Attaching a click event to the current marker google.maps.event.addListener(marker, "click", function(e) { infoWindow.setContent(data.description); infoWindow.open(map, marker); }); })(marker, data); } } })();
Excellente solution à l'aide d'une gamme de places au lieu de variables individuelles pour chaque lieu! J'ai quelques suggestions si vous voulez jeter un coup d'œil. Je les ai postés comme une "réponse" car je ne peux pas mettre de code formaté dans un commentaire, alors jetez un coup d'œil ci-dessous ...
C'est une réponse à la réponse de @ JoanmanuelHernández, mais je ne peux pas poster le code formaté dans un commentaire.
Joan, votre solution est excellente; C'est très similaire à la façon dont je le ferais moi-même. La création d'une gamme d'emplacements des marqueurs est bien meilleure que d'utiliser des variables individuelles pour chacun. P>
J'aimerais suggérer quelques améliorations mineures. L'un est l'endroit où vous avez la matrice nommée Suivant, où vous avez la boucle qui crée la fermeture pour gérer le rappel asynchrone Je pense qu'il est un peu plus facile de comprendre comment cela fonctionne si vous déplacez tout le corps de la boucle dans sa propre fonction. Ensuite, vous n'avez pas besoin de la fonction anonyme inline. Donc, ce code: p> deviendrait: p> Il fait la même chose, un peu plus simple de cette façon. P> une autre pensée: la carte de style est très cool-je suis un grand fan de cartes de style moi-même - mais je me demande s'il devrait être laissé ici pour des raisons de simplicité, car elle n'est pas " t liés à la question de l'OP? p> N'hésitez pas à intégrer l'une de ces idées dans votre propre réponse si vous les aimez, et si quelqu'un d'autre trouve cette variation utile, veuillez UPvote la réponse de Joan depuis que c'est là que le code d'origine est venu de. p> p> json code>. Ce n'est pas un nom très descriptif;
JSON code> pourrait signifier tout type de données. Pourquoi ne pas l'appeler quelque chose comme
lieux code> ou
ou
ou similaire? P>
Vous êtes très juste à propos des styles! et votre code semble beaucoup plus facile à comprendre. Super! Merci michael.