Google MapsAPIを使用してカスタムマップタイプを作成しました。

maptilerを使用してさまざまなズームレイヤーと0を作成しました。レイヤー(実際にはズームアウト)は256 x256タイルです。ただし、画像は134 x112しかカバーしていません。

Googleマップのデフォルトの地球座標ではなく、地図全体を基準にした地図座標を作成できるようにしたいです。たとえば、左上隅は(0,0)で、右下隅は(50,50)である必要があります。

Heitor Changからサポートを受けました: https://stackoverflow.com/questions/11192281/can-i-reset-latlng-coordinates-for-a-custom-map-type

問題はここにあります:

dayzProjection.prototype.fromLatLngToPoint = function(latlng) { // pixel size of tile at zoom 0 var max = 134; // define bottom-right corner as (50, 50) var x = max * latlng.lng() / 50; var y = max * latlng.lat() / 50; return new google.maps.Point(x, y); }; dayzProjection.prototype.fromPointToLatLng = function(pixel) { // inverse conversion var lng = pixel.x / max * 50; var lat = pixel.y / max * 50; return new google.maps.LatLng(lat, lng); }; 

誰かがこれらの座標を変換するのを手伝ってくれませんか。

これは役立つかもしれません: https://developers.google.com/maps/documentation/javascript/maptypes#Projections

回答

実際には、左上隅を0,0に、右下隅を50,50に配置することができます。これが必要な場合。もちろん、右下隅を10,10などの制限内に配置することもできます。緯度の場合は-90 / + 90、経度の場合は-180 / +180です。

比率は次のようになります。

/* ****************************************** Custom Projection - CARTESIAN ****************************************** */ function CartesianProjection() { // map size at zoom 0 is equal to tile size this.tileSize = 256; }; CartesianProjection.prototype.fromLatLngToPoint = function(latLng) { var x = (latLng.lng() / 50) * this.tileSize; var y = (latLng.lat() / 50) * this.tileSize; return new google.maps.Point(x, y); }; CartesianProjection.prototype.fromPointToLatLng = function(point, noWrap) { var lng = (point.x / this.tileSize) * 50; var lat = (point.y / this.tileSize) * 50; return new google.maps.LatLng(lat, lng, noWrap); }; 

次に、マップオプションでマップの中心をLatLng(25,25)に配置する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です