Цикл по JSON для получения гео-координат (d3 и листовка) - PullRequest
0 голосов
/ 05 февраля 2019

Я задавал это раньше, но упростил вопрос.У меня есть JSON с гео-координатами, который я хотел бы отобразить в d3 / листовке:

Вот структура, когда console.logging JSON allSFEvents:

(36) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]

Икопание в одном элементе:

@context: "http://schema.org"
@type: "MusicEvent"
endDate: "2019-01-27"
image: ""
location:
    @type: "Place"
    address: "San Francisco, CA"
    geo:
        @type: "GeoCoordinates"
        latitude: 37.775
        longitude: -122.4183333
        __proto__: Object
    name: "Natoma Cabana"
    __proto__: Object
    name: "Winter Olympics"
    performer: {url: "https://www.bandsintown.com/a/217960- 
    winter-olympics?came_from=244", image: "", @type: 
   "MusicGroup", name: "Winter Olympics"}
startDate: "2019-01-27"
url: "https://www.bandsintown.com/e/1013280443-winter-olympics-at-natoma-cabana?came_from=244"
__proto__: Object

Когда я пытаюсь преобразовать координаты latLong:

allSFEvents.forEach(function(d) {

  d.latLong = new L.LatLng(allSFEvents.location.geo[0],//first position is latitude
              allSFEvents.location.geo[1];//second position is longitude
  console.log(d.latLong)
  })

Это дает мне ошибку, говоря:

Cannot read property 'geo' of undefined

Как сделатьЯ перебираю каждый элемент и запускаю L / .LatLong здесь?Кажется, я застрял.Цель состоит в том, чтобы получить отдельные пары широты и долготы для каждого элемента, чтобы отобразить его.Заранее спасибо.

1 Ответ

0 голосов
/ 05 февраля 2019

функция forEach проходит через каждый элемент вашего списка, а параметр функции - это один элемент списка.Таким образом, d является одним из элементов вашего allSFEvents-Array.

https://www.w3schools.com/jsref/jsref_forEach.asp

Поэтому попробуйте следующее:

allSFEvents.forEach(function(d) {

//here replace allSFEEvents with d then location should be set. And replace geo[0] with geo.latitude and geo[1] with geo.longitude because geo is not an array
  d.latLong = new L.LatLng(d.location.geo.latitude,//first position is latitude
              d.location.geo.longitude;//second position is longitude
  console.log(d.latLong)
  })
...