2010-11-21 9 views
1

私はGoogleマップでオーバーレイをしようとしています。 maptilerを使って画像のタイルを生成しましたが、maptilerで生成された例はv2で、v3を使用したいと思います。 maptilerで生成されたサンプルも非常に複雑で不必要な不透明なものがあります。 v2以降、GMのv3が大幅に変更されました。画面上のある点のLatLngを生成するにはいくつかの問題があります。 getProjection()は未定義のままです。何をしていても、どのように投影を取得するのですか?Google Maps API 3オーバーレイ、投影を取得する必要があります

<script> 
    var mapBounds = new google.maps.LatLngBounds(); 
    var mapMinZoom = 8; 
    var mapMaxZoom = 14; 
    var overlay; 

    var maptiler = new google.maps.ImageMapType({ 
    getTileUrl: function(coord, zoom) { 
      if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) { 
     return "none.png"; 
     } 
     var ymax = 1 << zoom; 
     var y = ymax - coord.y -1; 
     var tileBounds = new google.maps.LatLngBounds(
     overlay.getProjection().fromDivPixelToLatLng(new google.maps.Point((coord.x)*256, (coord.y+1)*256) , zoom), 
     overlay.getProjection().fromDivPixelToLatLng(new google.maps.Point((coord.x+1)*256, (coord.y)*256) , zoom) 
    ); 
     if (mapBounds.intersects(tileBounds)) { 
     return "" + zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-coord.y-1) + ".png"; 
     } else { 
     return "none.png"; 
     } 
    }, 
    tileSize: new google.maps.Size(256, 256), 
    isPng: true 
    }); 

    var map; 
    function initialize() { 
    map = new google.maps.Map(document.getElementById("map_canvas")); 
    map.setZoom(11); 
    map.setMapTypeId('satellite'); 
    mapBounds.extend(new google.maps.LatLng(50.9388615939, 3.80480816501)); 
    mapBounds.extend(new google.maps.LatLng(51.4402541425, 4.73612507791)); 
    map.fitBounds(mapBounds); 

    overlay = new google.maps.OverlayView(); 
    overlay.draw = function() {}; 
    overlay.setMap(map); 

    map.overlayMapTypes.insertAt(0, maptiler); 
    } 
</script> 

オーバーレイ部分は、インターネット上で見つかった、プロジェクションにつながるハックです。残念ながらそれは動作しませんでした。どのようなアイデアはこれを修正する方法ですか? V2では次のようなことができます:

var mercator = new GMercatorProjection() 
mercator.fromPixelToLatLng(new GPoint((tile.x)*256, (tile.y+1)*256) , zoom) 

これはもうv3では不可能です。

誰でも手伝ってもらえますか?

maptilerによって生成された例では、ここで見つけることができます:

http://gmapsexample.staging1.kunstmaan.be/googlemapsv2.html

この作品v3では簡単な例です:

http://gmapsexample.staging1.kunstmaan.be/googlemapsv3_simple.html

しかし、私はへのマップ以外のすべてをしたいです特定の色になっているので、これは私が仕事をしようとしている例です:

http://gmapsexample.staging1.kunstmaan.be/googlemapsv3.html

おかげで、

大安

答えて

1

は、あなたが取得または投影の設定について心配する必要はありませんAPI3でカスタムオーバーレイについてのマニュアルを参照してくださいあなたはMapTiler

使用している場合、

これらの2つのYouTube動画は、Google Maps API v3マップを使用してMapTilerを使用して(特定の色にスタイルされている) (私が正しく理解している場合)について、あなたは求めている正確に何である:

0

は、あなたのメルカトル機能としてこれを試してみてください:

function GMercatorProjection() { 
    this.pixelOrigin_ = new google.maps.Point(tileSize/2, tileSize/2); 
    this.pixelsPerLonDegree_ = tileSize/360; 
    this.pixelsPerLonRadian_ = tileSize/(2 * Math.PI) 
} 
関連する問題