2009-05-28 16 views
0

マップの表示領域をいくつかの等しい部分に分割したいと考えています。たとえば、水平方向に10パーツ、垂直方向に15パーツとすると、150等分になります。 Googleマップは、そのようなことをサポートしている場合、私は知らないGoogleマップのディスプレイを同じ数の部品に分割するにはどうすればよいですか?

...

は総表示面積を返すmap.getBounds()。 ので、

var bounds = map.getBounds(); 
alert("main: "+bounds.isEmpty()); 
    var southWest = bounds.getSouthWest(); 
    var northEast = bounds.getNorthEast(); 
    var tileWidth = (northEast.lng() - southWest.lng())/10; 
    var tileHeight = (northEast.lat() - southWest.lat())/2; 

    for (var x=0; x < 10 ; x++) 
{ 
    for (var y=0; y < 2 ; y++) 
    { 
    var northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
    var westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
    var southLat = northLat + tileHeight; 
    var eastLng = westLng + tileHeight; 

      var tileBounds = new GLatLngBounds(new GLatLng(southLat, westLng), new GLatLng(northLat, eastLng)); 
    alert(tileBounds.isEmpty()); 

    } 
} 

今問題がtileBounds.isEmpty(ある)はTRUEを返し!

私は何かが不足している場所を見つけることができません!どのようなヘルプ!

+0

わからない、なぜあなたのgetBounds()の呼び出しが戻っています空のGLatLngBoundsオブジェクト。 mapオブジェクト(getSize()、getCenterなど)で他のいくつかの "metrics"呼び出しを試してみてください。どの時点でこのコードを呼び出していますか、地図ページの読み込みが完了しましたか?おそらくあなたの例へのリンクを含んでいますか? – RedBlueThing

+0

問題は解決されました。GLatLngBounds請負業者のx1、y1、x2、y2座標に間違っていました。どうもありがとう。 – Posto

+0

こんにちは、私のコードを見てみたいかもしれません:http://stackoverflow.com/questions/27221730/divide-a-path-into-equal-parts-in-google-map – maskarih

答えて

1

150個の小さいタイルの領域座標の後ろにいると仮定していますか?

map.getBounds()はGLatLngBoundsオブジェクトを返します。これには、getSouthWest()メソッドとgetNorthEast()メソッドが含まれます。底部用緯度/経度の値は、左から、あなたが150のより小さな領域の組の座標を導き出すことができ、可視マップの右上コーナーそう:

  • 分割幅(getNorthEastの経度() - 経度getSouthWest()の15)を使用して、タイルの幅を決定します。
  • 高さ(getNorthEast()の緯度 - getSouthWest()の緯度)を10で除算して、タイルの高さを決定します。
  • xとyのオフセットに幅と高さを掛けた値に基づいて、特定のセルの座標を計算します。

のでGLatLngBounds(SW GLatLng?:GLatLngを、NE?)インスタンス化する特定の細胞指数(x、y)のために:

// bounds is the map.getBounds() result 
northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
southLat = northLat + tileHeight; 
eastLng = westLng + tileHeight; 

tileBounds = new GLatLngBounds (new GLatLng (southLat, westLng), new GLatLng (northLat, eastLng)); 
+0

ありがとう、私はほとんどそこにいます。 しかし、特定のセルの座標を取得する方法とxとyのオフセットを取得する方法を混同しますか?私はその原料と私の答えを更新します – Posto

+0

... – RedBlueThing

+0

ちょうど分の事、 tileHeightおよびtileWidthプロパティ私はさようなら、 tileWidthプロパティ=(bounds.getNorthEast.lng() - bounds.getSouthWest.lng())を取得します/ 10; tileHeight =(bounds.getNorthEast.lat() - bounds.getSouthWest.lat())/ 15; xとyを取得してnorthLatまたはwestLngの値を取得する方法はありますか? – Posto

関連する問題