Как эффективно отображать элементы на карте Google в диапазоне просмотра пользователя? - PullRequest
3 голосов
/ 30 мая 2010

Когда пользователь перемещает карту Google, я бы хотел, чтобы элементы автоматически отображались в диапазоне просмотра. Как я могу эффективно и быстро отображать элементы?

У меня есть базовое понимание вызова метода getBounds () каждый раз, когда пользователь перемещает карту, но я не уверен, как я могу эффективно искать и получать из моей базы данных элементы в широте / долготе границ текущего окна просмотра , Есть ли более простой и быстрый способ сделать это?

Ответы [ 2 ]

1 голос
/ 30 мая 2010

В дополнение к ответу Geek вы также можете рассмотреть возможность создания индекса для Geohash .Вы также можете использовать базу данных с возможностями пространственного индексирования . MySQL , PostgreSQL и SQL Server 2008 имеют геопространственные функции (как исходные, так и через расширения), которые включают пространственную индексацию.

1 голос
/ 30 мая 2010

У меня была такая же проблема. Я пытался решить эту проблему следующим образом.

  • хранить long / lat в базе данных как десятичные дроби
  • поставить индексы на столбцы long и lat
  • используйте запрос типа SELECT * FROM table WHERE long > $long_left AND long < $long_right AND lat > $lat_bottom AND lat < $lat_top

Я предлагаю также использовать MarkerManager для обработки маркеров, если вы ожидаете большое количество маркеров, поскольку вы можете настроить маркеры так, чтобы они отображались только при определенных уровнях масштабирования.

хранение long / lat в виде десятичных дробей позволяет базе данных правильно сравнивать значения вместо необходимости преобразовывать значения перед их сравнением

индексы являются ключевыми с базами данных (ха ка :-)), используйте их правильно, но не злоупотребляйте ими

...