[google-maps] Google Maps v3 fitBounds () 단일 마커에 대해 너무 가깝게 확대

최대 확대 / 축소 수준을 설정하는 방법이 fitBounds()있습니까? 내 문제는지도에 한 위치 만 제공 될 때 가능한 한 멀리 확대되어 실제로지도를 컨텍스트에서 벗어나 쓸모 없게 만든다는 것입니다. 아마도 내가 잘못된 접근 방식을 취하고 있습니까?

미리 감사드립니다!



답변

저는 mrt의 솔루션을 좋아합니다 (특히 매핑하거나 조정할 지점 수를 모를 때). 단, 마커가 더 이상지도 중앙에 있지 않도록 표시를 해제한다는 점이 다릅니다. lat 및 lng에서 .01을 빼서 추가 포인트를 추가하기 만하면 마커가 중앙에 유지됩니다. 훌륭하게 작동합니다, 감사합니다 mrt!

// Pan & Zoom map to show all markers
function fitToMarkers(markers) {

    var bounds = new google.maps.LatLngBounds();

    // Create bounds from markers
    for( var index in markers ) {
        var latlng = markers[index].getPosition();
        bounds.extend(latlng);
    }

    // Don't zoom in too far on only one marker
    if (bounds.getNorthEast().equals(bounds.getSouthWest())) {
       var extendPoint1 = new google.maps.LatLng(bounds.getNorthEast().lat() + 0.01, bounds.getNorthEast().lng() + 0.01);
       var extendPoint2 = new google.maps.LatLng(bounds.getNorthEast().lat() - 0.01, bounds.getNorthEast().lng() - 0.01);
       bounds.extend(extendPoint1);
       bounds.extend(extendPoint2);
    }

    map.fitBounds(bounds);

    // Adjusting zoom here doesn't work :/

}


답변

다음과 maxZoom같이 MapOptions (api-reference) 에서 지도를 설정할 수 있습니다 .

var map = new google.maps.Map(document.getElementById("map"), { maxZoom: 10 });

이렇게하면 사용시지도가 더 깊게 확대되지 fitBounds()않고 확대 / 축소 컨트롤에서 확대 / 축소 수준이 제거됩니다.


답변

또 다른 해결책은 fitBounds ()를 실행하기 전에 경계가 너무 작다는 것을 감지하면 경계를 확장하는 것입니다.

var bounds = new google.maps.LatLngBounds();
// here you extend your bound as you like
// ...
if (bounds.getNorthEast().equals(bounds.getSouthWest())) {
   var extendPoint = new google.maps.LatLng(bounds.getNorthEast().lat() + 0.01, bounds.getNorthEast().lng() + 0.01);
   bounds.extend(extendPoint);
}
map.fitBounds(bounds);


답변

var map = new google.maps.Map(document.getElementById("map"), { maxZoom: 10 });

MaxZoom 옵션을 사용하면 확대 / 축소하지 않아 마크에 가까워집니다.


답변

실제 경계를 모두 추가했으면 다음 줄을 추가하십시오.

var offset = 0.002;
var center = bounds.getCenter();
bounds.extend(new google.maps.LatLng(center.lat() + offset, center.lng() + offset));
bounds.extend(new google.maps.LatLng(center.lat() - offset, center.lng() - offset));

실제 경계의 중심을 얻은 다음 두 개의 추가 점을 하나는 북동쪽에, 다른 하나는 중심의 남서쪽에 추가합니다.

이것은 최소 줌을 효과적으로 설정하고, 오프셋 값을 변경하여 줌을 늘리거나 줄입니다.


답변

단일 위치에 대한 경우 대신 setCenter () 및 setZoom ()을 사용할 수 있습니다.


답변

당신은 사용할 수 있습니다

map.setOptions({
    maxZoom: [what u want],
    minZoom: [what u want]
});

이런 식으로지도가 초기화 된 후지도의 속성을 설정합니다. …. 원하는만큼 여러 번 설정할 수 있지만, 경우에 따라 … fitBounds () 전에 설정할 수 있습니다.

행운을 빕니다, 라 루투