Google maps api 3 在鼠标单击上绘制100像素的多边形
我需要画一个100x100屏幕像素的正方形多边形,每当我点击谷歌地图阿姆斯特丹,lat 52,lng 4,在每个zoomlevel上,e.latlng在多边形的中心。我试着用fromLatLngToPoint,frompointtolatng,scale和worldcoardinations来计算它,但是我无法绘制多边形。如果有人喜欢这个谜题,我会非常感谢你的解答。 我想将此作为一个简单的开始,将多边形编辑为更复杂的形状,而不是使用DrawingManager 我试过:Google maps api 3 在鼠标单击上绘制100像素的多边形,google-maps-api-3,Google Maps Api 3,我需要画一个100x100屏幕像素的正方形多边形,每当我点击谷歌地图阿姆斯特丹,lat 52,lng 4,在每个zoomlevel上,e.latlng在多边形的中心。我试着用fromLatLngToPoint,frompointtolatng,scale和worldcoardinations来计算它,但是我无法绘制多边形。如果有人喜欢这个谜题,我会非常感谢你的解答。 我想将此作为一个简单的开始,将多边形编辑为更复杂的形状,而不是使用DrawingManager 我试过: google.maps.
google.maps.event.addListener(map, 'click', function(e) {
var scale = Math.pow(2, map.getZoom());
var nw = new google.maps.LatLng(map.getBounds().getNorthEast().lat(),map.getBounds().getSouthWest().lng());
var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw);
var worldCoordinate = map.getProjection().fromLatLngToPoint(e.latLng);
var deX = Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale);
var deY = Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale);
// so far so good, deX and deY give the centerpixel
var deNW = map.getProjection().fromPointToLatLng(new google.maps.Point(deX-50,deY-50));
var deNO = map.getProjection().fromPointToLatLng(new google.maps.Point(deX+50,deY-50));
var deZO = map.getProjection().fromPointToLatLng(new google.maps.Point(deX+50,deY+50));
var deZW = map.getProjection().fromPointToLatLng(new google.maps.Point(deX-50,deY+50));
var dePathArray = [deNW, deNO, deZO, deZW];
deObjectNew = new google.maps.Polygon({
paths: dePathArray,
strokeColor: '#000000',
strokeWeight: 1,
fillColor: "#FF0000",
fillOpacity: 0.3,
});
deObjectNew.setMap(map);
}) 明白了:
var deNW = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX-50)/scale+worldCoordinateNW.x,(deY-50)/scale+worldCoordinateNW.y));
var deNO = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX+50)/scale+worldCoordinateNW.x,(deY-50)/scale+worldCoordinateNW.y));
var deZO = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX+50)/scale+worldCoordinateNW.x,(deY+50)/scale+worldCoordinateNW.y));
var deZW = deKaart.getProjection().fromPointToLatLng(new google.maps.Point((deX-50)/scale+worldCoordinateNW.x,(deY+50)/scale+worldCoordinateNW.y));
你为什么不做一个100x100的正方形标记,然后点击鼠标就把它放下来呢?因为我需要一个多边形来编辑,而不是一个标记。