web-dev-qa-db-ja.com

Google Maps API v3は、マップをマーカーに最近配置します

マーカーがマップの外側にある場合、マップを再配置(フォーカス)する方法を探しています。たとえば、ビューエリアにないマーカーをクリックした場合...マーカー1:ニューヨークマーカー2:サンフランシスコ

v2では私はこのようにしています...しかしv3ではcontainsLatLngが追加のライブラリを必要とし、私のために機能しませんでした...(他の投稿を参照してください: Google Maps v3 map.getBounds()。containsLatLngはfunction )マーカーの位置にフォーカスする他の方法はありますか?

更新:

        if ((!map.getBounds().contains(marker.getPosition())) & (showAllCategoryElements == 0)) {
        var newCenterPointLng = (map.getBounds().getCenter().lng() + marker.getPosition().lng()) / 2;
        var newCenterPointLat = (map.getBounds().getCenter().lat() + marker.getPosition().lat()) / 2;

        map.panTo(marker.getPosition());
        //map.setCenter(new google.maps.LatLng(newCenterPointLat, newCenterPointLng));

        if (!map.getBounds().contains(marker.getPosition())){
            map.zoomOut();
        } 
    }
16
Jim

必要なメソッドは、containsLatLng()ではなく、contains()です。 map.getBounds().contains(marker.getPosition())

マップのsetCenter()またはpanTo()メソッドのいずれかを使用して、マーカー位置を中心に配置できます:map.setCenter(marker.getPosition())またはmap.panTo(marker.getPosition())

だからあなたが何をしようとしているのかを私が正しく理解していれば、次のようになります:

if ((!map.getBounds().contains(marker.getPosition())) && (showAllCategoryElements == 0)) { //Note the double &  
    map.setCenter(marker.getPosition());  
    //OR map.panTo(marker.getPosition());  
}
42
puckhead