Как конвертировать JSON в GeoJson для использования с Google Maps API v3 - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь использовать API Карт Google для создания кластера из 33 000 Точек на карте. Во-первых, позвольте мне предоставить некоторую справочную информацию.

Справочная информация:

В документации API Карт Google есть функция под названием loadGeoJson().

Обратный вызов для loadGeoJson() преобразует объект JSON, возвращаемый из запроса XHR, в объект, который может использоваться API. Этот объект выглядит примерно так:

(2) [_.Ke, _.Ke]  
0: _.Ke {m: undefined, j: _.Ze, l: {…}, closure_uid_258027441: 237, __e3_: {…}}  
1: _.Ke {m: undefined, j: _.Ze, l: {…}, closure_uid_258027441: 238, __e3_: {…}}  
length: 2
__proto__: Array(0)

Этот объект предназначен для использования с API. Я могу вызывать методы, такие как features.map() и feature.getGeometry().get(0), используя эту запись.


Вопрос:

Как мне взять объект JSON, отформатированный как GeoJson примерно так:

{features: Array(33156), type: "FeatureCollection"}
features: Array(33156)
[0 … 9999]
[10000 … 19999]
[20000 … 29999]
[30000 … 33155]
length: 33156
__proto__: Array(0)
type: "FeatureCollection"
__proto__: Object

... и преобразовать его в объект Google Maps GeoJson, который может использоваться API без использования AJAX?

Мой объект прямо здесь, в моем коде, но он непригоден для использования, потому что я не получаю объект из запроса AJAX? Это не имеет смысла.

Примечание: Использование addGeoJson() отображает все 33 000+ объектов (точек) на карте, не давая мне возможности использовать эти данные для создания кластера. Это слишком медленно! Загрузка занимает ~ 18 секунд (по таймеру с секундомером).

1 Ответ

0 голосов
/ 19 июня 2019

Я не смог найти метод, который преобразует JSON в объект GeoJson, который «используется» API, поэтому я просто использовал сам объект JSON и «отобразил» объекты в маркеры.

  // Map all Features to Markers
  var markers = geoJson.features.map(function (feature) {
    return new google.maps.Marker({
      position: { lat: feature.geometry.coordinates[1], lng: feature.geometry.coordinates[0] }
    });
  });
  // Make The Clusterizer
  var clusterizer = new MarkerClusterer(_map, markers,
    { imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' });
  console.log(geoJson);

Это намного быстрее, чем отображение 33 000 маркеров на карте.

(2 секунды по сравнению с 18)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...