2013-01-13 10 views
5

ich eine Google-Karte mit dem folgenden Code in einem Skript erschaffe -Wie die zentrale Position von Google-Map bewegen

var mapElement, 
    parent, 
    mapOptions, 
    map, 
    marker, 
    latLong, 
    openMarker; 

parent = document.getElementsByClassName('parent')[0]; 
mapElement = document.createElement('div'); 
latLong = new google.maps.LatLng(some_lat_from_db, some_long_from_db); 

mapOptions = { 
    center: latLong, 
    zoom: 14, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(mapElement, mapOptions); 
marker = new google.maps.Marker({ 
    position: latLong, 
    map: map, 
    title: 'some title' 
}); 

openMarker = function() { 
    var infowindow = new google.maps.InfoWindow(); 
    infowindow.setContent('Some Content'); 
    infowindow.open(map, marker); 
}; 

google.maps.event.addListener(marker, 'click', openMarker); 
parent.appendChild(mapElement); 
openMarker(); 

Wenn Sie diesen Code verwenden, das Infofenster, die außerhalb des aktuellen Kartenansichtsfenster standardmäßig öffnet geht also ist es nicht sichtbar. Ich habe zuerst versucht, die Größe des Info-Fensters zu reduzieren, aber das hat nicht funktioniert. Also dachte ich mir, dass ich den Mittelpunkt der Karte ein wenig verschieben soll, damit das Info-Fenster im Ansichtsfenster bleibt.

Also, wie kann ich die Mitte um einige Pixel verschieben, so dass das Infofenster im Ansichtsfenster bleibt?

+0

Sie können dies durch die Pixel nicht tun, aber Sie können die Karte Zentrum mit 'Breite und longitude' eingestellt . Sie können dies zum Beispiel tun, indem Sie das neue Zentrum mit dem Längen- und Breitengrad des angeklickten Markers setzen. – bumerang

+0

Warum verschieben Sie den Marker nicht einfach ein wenig nach unten (bewegen Sie auch den Senter der Karte)? –

+0

[Werfen Sie einen Blick darauf] (http://jsbin.com/icamar), nicht sicher, ob es hilft. –

Antwort

18

Sie können .setCenter() verwenden, um die Mitte der Karte

map.setCenter(marker.getPosition()); 

aktualisieren

Konvertieren mit .fromLatLngToDivPixel() in einen Point fügen einen Offset und wandeln es wieder in ein LatLng mit .fromDivPixelToLatLng()

die LatLng zu bewegen
+0

Danke für den Link. Ich möchte jedoch das Zentrum um einige Pixel von der Position des Markers weg verschieben. Wie ich oben in meiner Frage erwähnt habe, besteht das Hauptproblem darin, das Informationsfenster innerhalb des sichtbaren Bereichs zu verschieben, so dass eine Zentrierung in der Markerposition nicht hilft. –

+0

Ich habe meine Antwort aktualisiert – Andreas

+0

Ich benutze [diese] (http://jsfiddle.net/fqt7L/9/) Geige, um ein latlong zu Punktobjekt zu konvertieren. Ich bekomme jedoch "undefiniert" bei - overlay.getProjection(). Kannst du mir sagen, wie ich ein Projektionsobjekt bekommen kann? –

1

Vergiss all diesen Mist, das funktioniert, wenn du willst einen Google Map Marker wiederverwenden oder einen Google Map Marker verschieben oder einen Google Map Marker neu zentrieren.

var lo = <yourval>; 
var la = <yourval>; 
var midpoint = {lat:la, lng:lo }; 
marker.setPosition(midpoint); 

, wenn Sie einen Google Maps Marker zerstören oder eine Google-Maps Marker löschen

marker.setMap(null); 
Verwandte Themen