0

この関数をv3APIに変換する必要があります。この関数は、選択時にマーカーの下に楕円を作成するために使用されます。投影とオーバーレイを試しましたが、成功しませんでした。

  function makePolyPoints(_marker)
  {
    var polyPoints = Array();
    var markerPoint=  _marker.getLatLng();
    var projection = G_NORMAL_MAP.getProjection();
    var mapZoom = map.getZoom();
    var clickedPixel = projection.fromLatLngToPixel(markerPoint, mapZoom);
    var  ellipseRadA = 20;
    var ellipseRadB = 10;

    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 + ellipseRadA * Math.cos(aRad);
        var pixelY = -3 + clickedPixel.y + ellipseRadB * Math.sin(aRad);
        var polyPixel = new GPoint(pixelX,pixelY);
        var polyPoint = projection.fromPixelToLatLng(polyPixel,mapZoom);
        polyPoints.push(polyPoint);
    }
    return polyPoints;
}

ここで機能しないv3の関数、ズームレベルの問題だと思いますが、projection.fromLatLngToPixel(markerPoint、mapZoom);を置き換える方法が見つかりません。

function makePolyPoints(_marker)
{
    var polyPoints = Array();
    var markerPoint=  _marker.getPosition();
    var projection = map.getProjection();
    var mapZoom = map.getZoom();
    var clickedPixel = projection.fromLatLngToPoint(markerPoint);

    var  ellipseRadA = 20;
    var ellipseRadB = 10;

    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 + ellipseRadA * Math.cos(aRad);
        var pixelY = -3 + clickedPixel.y + ellipseRadB * Math.sin(aRad);
        var polyPixel = new google.maps.Point(pixelX,pixelY);
        var polyPoint = projection.fromPointToLatLng(polyPixel);
        polyPoints.push(polyPoint);
    }
    return polyPoints;
}
4

1 に答える 1

3

うーん..私はあなたを助けるために私のお気に入りのgmapの例の1つを使うつもりです。

まだクリックされたピクセル座標をvar clickedPixel = projection.fromLatLngToPoint(markerPoint);与えないでください、それらはまだ世界座標です。投影仕様を参照してください。

そのようなものを計算するときに独自のメルカトル図法を指定すると便利です。次の行をよく見てください:(このコード例では

var worldCoordinate = projection.fromLatLngToPoint(chicago);
    var pixelCoordinate = new google.maps.Point(
    worldCoordinate.x * numTiles,
    worldCoordinate.y * numTiles);

(firebugなどでソースを表示できます)。

お持ちでない場合(Mozillaの場合:[ツール]->[Web開発者]->[ページソース])

うまくいけば、これはあなたが問題を乗り越えるのに役立つでしょう:)

于 2013-01-31T16:05:37.587 に答える