Как можно разделить отображение Карт Google на равное количество частей? - PullRequest
0 голосов
/ 28 мая 2009

Я хочу разделить область отображения карты на несколько равных частей. Например: 10 частей по горизонтали и 15 частей по вертикали, в результате чего получается 150 равных частей.

Я не знаю, поддерживает ли Google Maps такую ​​вещь ...

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 !!

Я не могу найти, где мне чего-то не хватает !! Любая помощь !!

1 Ответ

1 голос
/ 28 мая 2009

Я предполагаю, что вы находитесь после координат региона для 150 меньших тайлов?

map.getBounds () возвращает объект GLatLngBounds. Это включает в себя методы getSouthWest () и getNorthEast (). Таким образом, из значений широты / долготы для нижнего левого и верхнего правого углов видимой карты вы можете получить координаты набора из 150 меньших регионов:

  • Разделите ширину (долготу getNorthEast () - долготу getSouthWest ()) на 15, чтобы определить ширину плитки.
  • Разделите высоту (широта getNorthEast () - широта getSouthWest ()) на 10, чтобы определить высоту плитки.
  • вычисление координат для конкретной ячейки на основе ее смещения по x и y, умноженной на ширину и высоту.

Таким образом, чтобы создать экземпляр GLatLngBounds (sw?: GLatLng, ne?: GLatLng) для определенного индекса ячейки (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));
...