Google maps api 3 用谷歌地图api3画一个没有';t调整大小

Google maps api 3 用谷歌地图api3画一个没有';t调整大小,google-maps-api-3,Google Maps Api 3,使用google maps api2,我使用以下代码绘制了一个圆圈: var markerPoint = currentMarker.getPoint(); var polyPoints = Array(); var mapNormalProj = G_NORMAL_MAP.getProjection(); var mapZoom = map.getZoom(); var clickedPixel = mapNormalProj.fromLatLngToPixel(markerPoint,

使用google maps api2,我使用以下代码绘制了一个圆圈:

var markerPoint = currentMarker.getPoint();

var polyPoints = Array();

var mapNormalProj = G_NORMAL_MAP.getProjection();
var mapZoom = map.getZoom();
var clickedPixel = mapNormalProj.fromLatLngToPixel(markerPoint, mapZoom);

var polySmallRadius = 20;

var polyNumSides = 20;
var polySideLength = 18;

for (var a = 0; a<(polyNumSides+1); a++) {
 var aRad = polySideLength*a*(Math.PI/180);
 var polyRadius = polySmallRadius; 
 var pixelX = clickedPixel.x + 5 + polyRadius * Math.cos(aRad);
 var pixelY = clickedPixel.y - 10 + polyRadius * Math.sin(aRad);
 var polyPixel = new GPoint(pixelX,pixelY);
 var polyPoint = mapNormalProj.fromPixelToLatLng(polyPixel,mapZoom);
 polyPoints.push(polyPoint);
}
// Using GPolygon(points,  strokeColor?,  strokeWeight?,  strokeOpacity?,  fillColor?,  fillOpacity?)
highlightCircle = new GPolygon(polyPoints,"#000000",2,0.0,"#FF0000",.5);
map.addOverlay(highlightCircle);
var-markerPoint=currentMarker.getPoint();
var polyPoints=Array();
var mapNormalProj=G_NORMAL_MAP.getProjection();
var mapZoom=map.getZoom();
var clickedPixel=mapNormalProj.fromLatLngToPixel(标记点,贴图缩放);
var=20;
var多项式边=20;
var多边形长度=18;

对于(var a=0;a您正在基于点平面进行计算,无论您处于何种缩放级别,该平面都保持不变。您可能打算使用像素进行计算

您正在寻找的方法是。
fromLatLngToContainerPixel
fromContainerPixelToLatLng
fromLatLngToDivPixel
fromDivPixelToLatLng


这意味着您可能应该将该代码包装到覆盖视图中,并在
地图上调用
getProjection()
以获得投影,然后使用其中一组方法进行计算。

使用自定义标记,而不是圆,您可能会更幸运。请参阅此处文档中的“向量图标”:

var markerPoint = currentMarker.getPosition();

var polyPoints = Array();


var mapNormalProj = map.getProjection();
var mapZoom = map.getZoom();
var clickedPixel = mapNormalProj.fromLatLngToPoint(markerPoint);

var polyRadius = 20;

var polyNumSides = 20;
var polySideLength = 18;

for (var a = 0; a<(polyNumSides+1); a++) {
 var aRad = polySideLength*a*(Math.PI/180);
 var pixelX = clickedPixel.x + 5 + (polyRadius * Math.cos(aRad));
 var pixelY = clickedPixel.y - 10 + (polyRadius * Math.sin(aRad));
 var polyPixel = new google.maps.Point(pixelX,pixelY);
 var polyPoint = mapNormalProj.fromPointToLatLng(polyPixel);
 polyPoints.push(polyPoint);
}

highlightCircle = new google.maps.Polygon({
 paths: polyPoints,
 strokeColor: "#FF0000",
 strokeOpacity: 0.8,
 strokeWeight: 2,
 fillColor: "#FF0000",
 fillOpacity: 0.35
});

highlightCircle.setMap(map);
var marker = new google.maps.Marker({
    position: new google.maps.LatLng(-25.363882, 131.044922),
    icon: {
        path: google.maps.SymbolPath.CIRCLE,
        scale: 10
    },
    draggable: true,
    map: map
});