2013-01-13 16 views
5

google haritasının merkezi konumunu nasıl taşınır -Aşağıdaki kod ile bir komut dosyasındaki bir google harita oluşturma

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

bu kodu kullanarak, varsayılan olarak açılır infowindow haritası görünümün dışında gider Bu yüzden görünür değil. İlk önce bilgi penceresinin boyutunu azaltmaya çalıştım ama bu işe yaramadı. Bu yüzden haritanın merkezini biraz hareket ettirmeyi düşündüm, böylece bilgi penceresi görünümde kalıyor.

Peki, pencereyi bazı piksellere göre nasıl taşıyabilirim, böylece bilgi penceresi görünüm penceresinde kalır?

+0

. Örneğin, yeni merkezin tıklatılmış işaretlemenin enlemi ve boylamını kullanarak yeni merkezi ayarlayarak yapabilirsiniz. – bumerang

+0

Neden işaretçiyi biraz hareket ettirmiyorsunuz (haritanın işaretçisini de taşıyorsunuz)? –

+0

[Buna bir bakın] (http://jsbin.com/icamar), yardımcı olup olmadığından emin değil. –

cevap

18

Sen bir ofset eklemek

map.setCenter(marker.getPosition()); 

Güncelleme

bir Point içine .fromLatLngToDivPixel() ile LatLng dönüştürme haritanın merkezini taşımak için .setCenter() kullanabilir ve LatLng ile .fromDivPixelToLatLng()

içine geri dönüştürmek
+0

Bağlantı için teşekkürler. Bununla birlikte, merkezi işaretleyicinin konumlandırıldığı bazı piksellerle uzaklaştırmak istiyorum. Yukarıda bahsettiğim gibi, asıl sorun bilgi penceresini görüntülenebilir alan içinde taşımaktır, bu yüzden işaretleyici pozisyonunda ortalamak yardımcı olmaz. –

+0

Cevabımı – Andreas

+0

güncelledim. [Bu] (http://jsfiddle.net/fqt7L/9/) köşeyi bir gecikme noktası nesnesine dönüştürmek için kullanıyorum. Ancak, - overlay.getProjection() 'da undefined' alıyorum. Bir projeksiyon nesnesini nasıl alabileceğimi söyleyebilir misin? –

1

Bütün bunları unutun, eğer isterseniz bu işe yaramaz. Google harita işaretleyicisini yeniden kullanmak veya bir google harita işaretçisini taşımak veya bir google harita işaretleyicisini tekrar aramak.

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

Eğer bir google harita işaretçisi bir google harita işaretleyici yok etmek veya silmek istiyorsanız

marker.setMap(null); 
Sen piksel bunu yapamaz, ancak sen `enlem ve longitude` kullanarak harita merkezini ayarlayabilirsiniz
İlgili konular