2015-01-27 8 views
-3

Google지도 응용 프로그램에서 leaflet fitBounds과 같은 것을 사용하고 싶습니다. 우리는 몇 가지 예제를 보았지만 예상대로 작동하지 않습니다. 우리는 내가 일하는 해결책을 발견 잠시 후 ...Google지도에서 fitBounds를 패딩으로 매핑 하시겠습니까?

function zoomToBounds(polygon){ 
bounds = new google.maps.LatLngBounds(); 
$.each(polygon, function(key, latLng) { 
    bounds.extend(new google.maps.LatLng(latLng.lat, latLng.lng)); 
});  

///////////////////////////////////////////////////////////// 
// We saw a solution like this, but the zooming is a problem 
// 
// Extend bounds with a fake point: 
///////////////////////////////////////////////////////////// 
/* 
if (this.map.getProjection()) { 
    proj = this.map.getProjection(); 
    latlng = bounds.getSouthWest(); 
    swPoint = proj.fromLatLngToPoint(latlng); 
    latlng2 = proj.fromPointToLatLng({ 
     x: swPoint.x - 10, 
     y: swPoint.y 
    }); 
    bounds.extend(latlng2); 
}*/ 

this.map.fitBounds(bounds); 
} 
+0

죄송합니다, 무슨 문제? – Craicerjack

+0

피들은 내가 볼 수있는 것으로부터 잘 작동합니다. – Craicerjack

+0

관련 질문 : [Google지도 (API v3)의 중심을 픽셀 단위로 오프셋하는 방법?] (http://stackoverflow.com/questions/3473367/how-to-offset -the-center-of-a-google-maps-api-v3-in-pixels) – geocodezip

답변

1

를, 구글지도 컨트롤러와 DIV을 수동으로 경계를 확장하지만에서 아무것도 일하지하려고 노력했다.

if (this.map.getProjection()) { 
    var offsetx = 200; 
    var offsety = 0; 

    var point1 = this.map.getProjection().fromLatLngToPoint(bounds.getSouthWest()); 
    this.map.fitBounds(bounds); 

    var point2 = new google.maps.Point(
     ((typeof(offsetx) == 'number' ? offsetx : 0)/Math.pow(2, this.map.getZoom())) || 0, 
     ((typeof(offsety) == 'number' ? offsety : 0)/Math.pow(2, this.map.getZoom())) || 0 
    );   

    var newPoint = this.map.getProjection().fromPointToLatLng(new google.maps.Point(
     point1.x - point2.x, 
     point1.y + point2.y 
    )); 

    bounds.extend(newPoint); 
    this.map.fitBounds(bounds); 
} 

jsfiddle