2013-05-07 44 views
0

我想避免显示位于的地图边缘的标记,因为它们的一半是可见的(并且我不想在显示infowindow时拖动地图)。为此,我如何计算比原始边界略小的地图边界(例如,从各个方面来看,例如,1cm40px)。谷歌地图api v3:我怎样才能计算从各方面短1厘米的地图边界?

或者有没有更好的解决方案?

+0

可能重复[如何创建围绕谷歌地图边缘的填充(http://stackoverflow.com/questions/ 9712268 /如何对创建-A-填充-围绕最边缘对的一谷歌地图) – geocodezip 2013-05-07 05:54:54

回答

0

我知道了...... 下面是代码:

function setRectangle(center){ 
    var scale = Math.pow(2,MainMap.getZoom()); 
    var proj = MainMap.getProjection(); 
    var wc = proj.fromLatLngToPoint(center); 
    var bounds = new google.maps.LatLngBounds(); 
    var sw = new google.maps.Point(((wc.x * scale) - (($('#google-map-canvas').width() - 75)*0.5))/ scale, ((wc.y * scale) - (($('#google-map-canvas').height() - 75)*0.5))/ scale); 
bounds.extend(proj.fromPointToLatLng(sw)); 
var ne = new google.maps.Point(((wc.x * scale) + (($('#google-map-canvas').width() - 75)*0.5))/ scale, ((wc.y * scale) + (($('#google-map-canvas').height() - 75)*0.5))/ scale); 
bounds.extend(proj.fromPointToLatLng(ne)); 
    var opts = { 
     strokeColor: "#FF0000", 
     strokeOpacity: 0.8, 
     strokeWeight: 2, 
     fillColor: "#FF0000", 
     fillOpacity: 0, 
     bounds: bounds, 
     map: MainMap 
    }; 
enclosedRectangle = new google.maps.Rectangle(opts); 
}