2013-01-13 18 views
5

グーグルマップの中心位置を移動する方法 -は、私は次のコードでスクリプト内のGoogleマップを作成してい

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

このコードを使用して、デフォルトで開く情報ウィンドウには、マップビューポートの外に行きます、それは見えません。私はまず情報ウィンドウのサイズを縮小しようとしましたが、うまくいかなかったのです。だから私は、情報ウィンドウがビューポートに残るように地図の中心を少し動かすことを考えました。

したがって、インフォメーションウィンドウがビューポートに残るように、いくつかのピクセルで中心を移動するにはどうすればよいですか?

+0

を削除したい場合は、ピクセルによってこれを行うことはできませんが、あなたが '緯度とlongitude'を使用して、マップの中心を設定することができます。クリックしたマーカーの緯度と経度を使用して新しい中心を設定するなどして、これを行うことができます – bumerang

+0

マーカーを少し下に動かすだけでは(マップの中心も移動しないでください)。 –

+0

[これを見てください](http://jsbin.com/icamar)、役立つかどうかは分かりません。 –

答えて

18

あなたはオフセット追加

map.setCenter(marker.getPosition()); 

更新が

Point.fromLatLngToDivPixel()LatLngを変換するマップの中心を移動するために.setCenter()を使用してLatLng.fromDivPixelToLatLng()

に戻し、それを変換することができます
+0

リンクをありがとう。しかし、マーカーを置いた場所からいくつかのピクセル分だけセンタを動かしたいと思っています。上記の私の質問で述べたように、主な問題は可視領域内で情報ウィンドウを移動することです。マーカー位置をセンタリングすることは役に立ちません。 –

+0

私は自分の答えを更新しました – Andreas

+0

私は[this](http://jsfiddle.net/fqt7L/9/)fiddleを使ってlatlongをポイントオブジェクトに変換しています。しかし、私は 'undefined'をoverlay.getProjection()で取得しています。どのように投影オブジェクトを得ることができますか教えていただけますか? –

1

あなたが望むならば、これは何のことでしょうか? Googleマップマーカーを再利用するか、Googleマップマーカーを移動するか、Googleマップマーカーを再入力します。

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

あなたはGoogleマップのマーカーを破壊するか、Googleマップのマーカー

marker.setMap(null); 
関連する問題