J'ai travaillé sur la création de cette carte pour un client, mais je me sens un peu dépassé. Jusqu'à présent, j'ai réussi à utiliser modx pour créer dynamiquement une liste de marqueurs pour la carte, créer une icône personnalisée qui fonctionne avec succès et je l'ai stylisée comme je l'aimerais. Cependant, je cherche un peu d'aide à propos de ce qui suit:API Google Maps: positionnement, comportement bizarre et comment désactiver certaines fonctionnalités
L'icône personnalisée ne pointe pas exactement où je le souhaite. Je suppose que la variable iconAnchor est ce qui contrôle cela. Est-ce exact? Est-ce que ses valeurs sont juste coordonnées par rapport à l'icône? Je voudrais également savoir où mon positionnement infowindow est également contrôlé.
Lorsque je clique sur un emplacement dans la liste, la carte est centrée sur cet emplacement, mais par conséquent, mon infowindow dépasse le bas de la carte. Y a-t-il un moyen de faire apparaître l'icône du marqueur dans le quadrant supérieur gauche de la carte? Mon infowindow aura éventuellement une liste d'environ 10-15 images avec du texte à côté d'eux, et je voudrais que la fenêtre d'information pour faire défiler. J'ai ce travail, mais quand je clique et déplace la barre de défilement vers le bas, dès que je lâche la souris, il arrête de défiler mais tient la carte - par conséquent, après le défilement, la carte se déplace avec le Souris. Une idée de ce qui cause ça?
Ma dernière préoccupation est de savoir comment la carte saute d'un point à l'autre après le chargement. Il montre chaque emplacement pour un moment, puis saute à l'autre. Est-il possible de supprimer cette fonctionnalité et de définir une zone de carte de début qui affichera tous mes marqueurs?
Merci pour tous les conseils.
Code Mon a été adapté à partir de: http://www.erikwhite.net/gmapjquery.html
Voici mon code actuel:
$(document).ready(function(){
var defaultLat = 50.5;
var defaultLon = -1.4;
//code to enable a customer marker on the map
var icon = new GIcon();
icon.image = '/img/icon.png';
icon.iconSize = new GSize (45, 48);
icon.iconAnchor = new GPoint (8, 42);
icon.infoWindowAnchor = new GPoint (43, 6);
//var markers = new GMarker(getLatLng();, icon);
var markers = new Array();
markers[0] = new Array(new GMarker(new GLatLng(LAT, LNG), icon), "TITLE", "title, blurb and a set of images paired with a line of text");
var map = new google.maps.Map2($("#map").get(0));//Initialise google maps
map.setCenter(new GLatLng(defaultLat, defaultLon), 15);//Set location to the default and zoom level
map.disableDoubleClickZoom();//Disable zooming
$.each(markers,function(i,marker){
var delayTime = ((i * 300)/(0.5 * markers.length));//Delay time decreases as number of markers increases
setTimeout(function(){
map.addOverlay(marker[0]);
$("")
.html(markers[i][1])//Use list item label from array
.click(function(){
displayPoint(marker[0], i);
setActive(this);//Show active state
})
.appendTo("#list");
GEvent.addListener(marker[0], "click", function(){
displayPoint(marker[0], i);
setActive(i);//Show active location
});
displayPoint(marker[0], i);
setActive(i);//Show active location
if (i == (markers.length - 1)) {//If last item in array
setTimeout(function(){//Remove active class and fade marker after delay
$("#map_message").fadeOut();
//setActive();
}, 3500);
}
}, delayTime);
});
$("#list").css("opacity","0.2").animate({opacity: 1}, 1100);//Fade in menu
$("#map_message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));
function displayPoint(marker, index){
if ($('#map_message').is(':hidden')) {//Allow toggling of markers
$('#map_message').fadeIn();
}
else{//Remove all .active classes and hide markers
$('#map_message').hide();
$(".active").removeClass();
}
//$("#map_message").hide();//Default behaviour, doesn't allow toggling
var moveEnd = GEvent.addListener(map, "moveend", function(){
var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
$("#map_message")
.html(markers[index][2])//Use information from array
.fadeIn()
.css({ top:markerOffset.y, left:markerOffset.x });
GEvent.removeListener(moveEnd);
});
map.panTo(marker.getLatLng());
}
function setActive(el){
$(".active").removeClass();//Remove all .active classes
$("#list").find('li').eq(el).addClass('active');//Find list element equal to index number and set active
$(el).addClass('active');//Set active if list element clicked directly
}
}); //End onReady
<div id="map" style="width: 500px; height: 350px; border: 1px solid #777; ">map</div>
<div id="list"></div>
<div id="map_message"></div>
#map { float:left; margin-left: 180px; width:500px; height:350px; }
#map_message { position:absolute; padding:10px; background:#5dbb46; color:#fff; width:200px; height:180px; overflow:auto; }
#list { float:left; width:150px; background:#acacad; color:#fff; list-style:none; padding:0; }
#list li { padding:8px; }
#list li:hover { background:#bdbdbe; color:#fff; cursor:pointer; cursor:hand; }