Отображение магазинов на основе уровня масштабирования из Google Maps API - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь создать следующий алгоритм ниже, но я не уверен, как я могу начать, поэтому здесь нет кода:

Цель состоит в том, чтобы отобразить (например, 30 магазинов из Google Maps). В настоящее время я использую Google Maps API в приложении.

Алгоритм:
Получить 30 различных магазинов в зависимости от уровня масштабирования.

Пример 1: если масштаб 10 (City Zoom) показать 30 различных магазинов с определенным увеличением. Эти магазины будут охватывать разные латы и длинные карты. (в идеале охватывать Север, Юг, Восток и Запад из того, что пользователь сейчас видит на карте).

Пример 2: если пользователь увеличит уровень до 15, (Street Zoom) также отобразит эти 30 магазинов с определенным увеличением. Если не 30 магазинов, будет отображаться (<30). </p>

Любая помощь будет признательна. Если понадобятся дополнительные разъяснения, прокомментируйте, и я внесу изменения в пост.

1 Ответ

0 голосов
/ 09 сентября 2018
  1. Перед показом магазинов вам нужно спрятать «стандартные» маркеры, как в этом ответе Jozef :

Вы можете сделать это просто путем изменения стиля карты: Добавление стилизованный Карта

  1. Создать файл JSON src \ main \ res \ raw \ map_style.json примерно так:

[
  {
    featureType: "poi",
    elementType: "labels",
    stylers: [
      {
        visibility: "off"
      }
    ]
  }
]
  1. Добавить стиль карты к вашему GoogleMap

googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
  1. Вы можете использовать Поиск мест из Google Places API и получать список точек интереса с помощью ближайшего запроса URL:

    https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>

разобрать.

NB! Запрос соседнего URL-адреса возвращает только 20 мест, для загрузки дополнительных данных следует использовать строковое значение из тега ответа next_page_token и передать его через параметр pagetoken для следующего запроса:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>&pagetoken=<TOKEN_FOR_NEXT_PAGE_FROM_next_page_token_TAG_OF_RESPONSE>
  1. Вы можете выбрать 30 магазинов из списка с помощью rating или другого поля или по другим пользовательским критериям. И, похоже, если пользователь изменит масштаб с 10 на 15, все магазины, показанные с увеличением 10, все равно должны быть видны.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...