Перенос приложения API карт Google из таблиц Fusion в хранилище данных + слой данных - PullRequest
0 голосов
/ 24 декабря 2018

Я планирую перейти от таблиц слияния.Моя текущая реализация (на gae) имеет таблицу слияния с сотнями местоположений и отображает ее на слое таблиц слияния через API Google Maps.Фильтрация местоположений выполняется путем модификации запроса таблиц слияния в javascript на клиенте.

Я планирую перейти на хранилище данных движка приложений Google в сочетании со слоем данных карт Google.Но я полностью озадачен тем, как реализовать извлечение и отображение данных, даже когда пользователь просматривает карту (масштабирование, панорамирование) или применяет фильтры, поскольку об этом все заботился слой таблиц сгорания.

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

Как насчет фильтрации.Когда пользователь применяет фильтр, следует ли мне снова запрашивать данные или лучше внедрить фильтр на стороне клиента и скрыть элементы на карте с помощью стилей карты?

Имеет ли смысл использовать формат geojson для передачи данных с сервера на клиент, чтобы его можно было использовать для заполнения слоя данных без дальнейшей обработки?

Что произойдет, если пользователь полностью уменьшит масштаб?Должен ли я затем передать полный набор данных клиенту и оттуда обратно в API карт Google для рендеринга?Это тоже не кажется масштабируемым?

Со столами фьюжн все об этом позаботились ... Теперь есть так много вариантов выбора !?Должен быть какой-то общий подход к этому виду использования, не так ли?

Вот скриншот моего приложения, чтобы показать количество данных, которые вовлечены (могут расти!)

enter image description here

1 Ответ

0 голосов
/ 29 декабря 2018

У меня происходит нечто подобное.Для меня один запрос к хранилищу данных и выборка ограничены парой сотен записей до истечения времени ожидания HTTP-запроса.Так что это не очень хорошо справится с вашим сценарием «уменьшения масштаба».

Еще одна вещь, которую стоит отметить, - это то, что хранилище данных не сможет выполнить фильтр неравенства по широте и долготе.https://cloud.google.com/appengine/docs/standard/python/datastore/query-restrictions#inequality_filters_are_limited_to_at_most_one_property

В настоящее время я публикую весь мой список ~ 10k точек в виде файла json в облачном хранилище Google, а затем моя конечная точка обслуживает этот кэшированный файл вместо фактической выборки.https://cloud.google.com/appengine/docs/standard/python/tools/webapp/blobstorehandlers#Using_with_GCS

На клиентской стороне я просто передаю все это в Google Maps SDK.Карта работает нормально, если вы включите такие вещи, как кластеризация маркеров.https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.optimized https://developers.google.com/maps/documentation/javascript/marker-clustering

...