2013-01-13 14 views
5

sto creando una mappa di Google in uno script con il seguente codice -Come spostare la posizione centrale di google map

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(); 

Quando si utilizza questo codice, l'infowindow che si apre di default va fuori della mappa viewport , quindi non è visibile. Per prima cosa ho provato a ridurre la dimensione della finestra informativa ma non ha funzionato. Così ho pensato di spostare un po 'il centro della mappa in modo che la finestra delle informazioni rimanga nella finestra.

Quindi, come posso spostare il centro di alcuni pixel in modo che la finestra delle informazioni rimanga nella finestra?

+0

Non si può fare questo pixel, ma è possibile impostare il centro mappa utilizzando latitudine e 'longitude' . Puoi farlo ad esempio impostando il nuovo centro usando la latitudine e la longitudine del marcatore cliccato – bumerang

+0

Perché non ti limiti a muovere un po 'il marcatore (spostati anche il mittente della mappa)? –

+0

[Date un'occhiata a questo] (http://jsbin.com/icamar), non sono sicuro che sia d'aiuto. –

risposta

18

È possibile utilizzare .setCenter() per spostare il centro della mappa

map.setCenter(marker.getPosition()); 

Aggiornamento

Convertire il LatLng con .fromLatLngToDivPixel() in un Point aggiungere un offset e riconvertirlo in un LatLng con .fromDivPixelToLatLng()

+0

Grazie per il link. Tuttavia, voglio spostare il centro di alcuni pixel da dove è posizionato il marcatore. Come ho accennato sopra nella mia domanda, il problema principale è spostare la finestra informativa all'interno dell'area visibile, quindi il centraggio nella posizione dell'indicatore non sarà di aiuto. –

+0

Ho aggiornato la mia risposta – Andreas

+0

Sto usando [questo] (http://jsfiddle.net/fqt7L/9/) violino per convertire un oggetto latlong in punto. Tuttavia, sto diventando 'indefinito' su - overlay.getProjection(). Puoi dirmi come posso ottenere un oggetto di proiezione? –

1

dimentica tutto quello schifo questo è ciò che funziona se vuoi per riutilizzare un indicatore di mappa di google o spostare un indicatore di mappa di google o più recente un indicatore di mappa di google.

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

se si vuole distruggere un marker mappe Google o eliminare un marcatore mappe google

marker.setMap(null); 
Problemi correlati