Как получить конкретное значение из связанного json в javascript с помощью mapQuest

Ppl, я пытаюсь получить lat и lng из MapQuest Decoding Json... но мой javascript настолько плох, что я не знаю, должен ли я использовать jquery или нет, может быть, с разбором я просто могу...

Я отправляю адрес в Json для расчета широты и долготы...

<input type="hidden" id="address" value=" @(String.Format("{0} - {1} - {2} - {3}",
                                                              this.Model.Calle, this.Model.Altura,
                                                              this.Model.localidadesInmueble.nombre,
                                                              this.Model.provinciasInmueble.nombre)) " />
                <output id='map' style="width:700px; height:525px; margin: 0; padding: 0;" />

Вот код Javascript:

<script>
    // Initialize and add the map
    function initMap() {

        var JsonMapQuest = JSON.parse('http://open.mapquestapi.com/geocoding/v1/address?key=MYKEY&location=Address');
        //var JsonMapQuestDecoded = decodeURI($JsonMapQuest);
        
        var lat1 = $jsonMapQuest.results.locations.latLng.lat;
        var lon1 = $jsonMapQuest.results.locations.latLng.lng;
        // Posicion del mapa
        var pos = { lat: lat1, lng: lon1 };
        // El mapa, centrado en la posicion
        var map = new google.maps.Map(
            document.getElementById('map'), { zoom: 8, center: pos });
        // El marcador, posicionado en la posicion
        var marker = new google.maps.Marker({ position: pos, map: map });
    }
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap"
        async defer></script>

Это JSON, который я получаю от URL...

{
  "info": {
    "statuscode": 0,
    "copyright": {
      "text": "© 2018 MapQuest, Inc.",
      "imageUrl": "http://api.mqcdn.com/res/mqlogo.gif",
      "imageAltText": "© 2018 MapQuest, Inc."
    },
    "messages": []
  },
  "options": {
    "maxResults": -1,
    "thumbMaps": true,
    "ignoreLatLngInput": false
  },
  "results": [
    {
      "providedLocation": {
        "location": "Washington,DC"
      },
      "locations": [
        {
          "street": "",
          "adminArea6": "",
          "adminArea6Type": "Neighborhood",
          "adminArea5": "Washington",
          "adminArea5Type": "City",
          "adminArea4": "District of Columbia",
          "adminArea4Type": "County",
          "adminArea3": "DC",
          "adminArea3Type": "State",
          "adminArea1": "US",
          "adminArea1Type": "Country",
          "postalCode": "",
          "geocodeQualityCode": "A5XAX",
          "geocodeQuality": "CITY",
          "dragPoint": false,
          "sideOfStreet": "N",
          "linkId": "282772166",
          "unknownInput": "",
          "type": "s",
          "latLng": {
            "lat": 38.892062,
            "lng": -77.019912
          },
          "displayLatLng": {
            "lat": 38.892062,
            "lng": -77.019912
          },
          "mapUrl": "http://open.mapquestapi.com/staticmap/v4/getmap?key=KEY&type=map&size=225,160&pois=purple-1,38.892062,-77.019912,0,0,|&center=38.892062,-77.019912&zoom=12&rand=306744981"
        }
      ]
    }
  ]
}

Это не работает, на моей странице нет карты. Результат должен быть, карта, сгенерированная с картами Google, с центром и маркером на адресе, который я указал на URL-адресе, который дал мне mapQuest...


person BelgratoSystem    schedule 25.09.2019    source источник
comment
Пожалуйста, задайте четкий вопрос. Непонятно, что вы спрашиваете.   -  person ChrisG    schedule 25.09.2019
comment
Я хочу получить широту и долготу из Json, который дает мне MapQuest, отправив адрес в качестве параметра, получить значения, а затем заполнить var pos для отправки на карты Google и получить местоположение адреса   -  person BelgratoSystem    schedule 25.09.2019
comment
Что не так с кодом, который у вас есть? Это ошибка? Это не работает? Пожалуйста, обновите вопрос с дополнительной информацией. Что происходит и чего вы ожидаете?   -  person ChrisG    schedule 25.09.2019
comment
Вы используете службу геокодирования Mapquest для отображения информации на карте Google. Если у вас нет платного плана Business Enhanced или Business Plus Enhanced с Mapquest, это будет нарушением их Условий. службы. (Поищите геокодирование на странице.) Геокодирование — это дорогостоящая услуга, поэтому поставщики услуг, как правило, суетятся в желании получать за это деньги. Вы можете рассмотреть возможность объединения обеих услуг с одним поставщиком, но следите за условиями обслуживания и ценами любого из них!   -  person Michael Geary    schedule 25.09.2019
comment
Что касается технической стороны, то сейчас вам важно научиться пользоваться инструментами разработчика в своем браузере. Они покажут вам многие из ваших ошибок и помогут вам отладить их. Вот руководство по Chrome DevTools. Я предлагаю пройти все руководство и попробовать все, что оно предлагает. Вы узнаете много нового о JavaScript и о том, как отлаживать свой код.   -  person Michael Geary    schedule 25.09.2019
comment
Уже отредактировал пост, чтобы ответить на ваши вопросы, не показывает карту, вот в чем проблема... карта работала только с картами Google, вводя некоторые широту и долготу случайным образом... теперь, когда я добавляю геокод с MapQuest, я не получаю что-нибудь   -  person BelgratoSystem    schedule 25.09.2019
comment
Спасибо! я отлаживал с помощью f12 и ctrl+shift+j ... но сообщения об ошибках сложны для меня, я думал, что если это была синтаксическая ошибка, я могу решить с вашей помощью отсюда, но отладка - это всегда решение! Спасибо!   -  person BelgratoSystem    schedule 25.09.2019
comment
оба сервиса, Карты от Google и Геокод от MapQuest платные... я не знал, что я не могу использовать их одним и тем же методом,... АпиГеокод от Google слишком дорогой, чем MapQuests..   -  person BelgratoSystem    schedule 25.09.2019
comment
О, пожалуйста, простите меня за неправильное предположение! Вот часть Условий использования Mapquest, которая меня обеспокоила: если лицензия на геокодирование с расширенными правами не включена в ежемесячную подписку Клиента на MapQuest, Клиент может использовать только геокоды со стандартными правами (т. е. может использовать геокоды только в сочетании с картой MapQuest). Клиент не может использовать предоставленные геокоды с расширенными правами, если только Клиент не подписался на планы Business Enhanced или Business Plus Enhanced. Но если у вас есть платные аккаунты соответствующего типа на обоих сервисах, то вы точно сможете использовать их вместе.   -  person Michael Geary    schedule 25.09.2019
comment
Без проблем!!! теперь карты работают нормально, но я думаю, что проблема заключается в отправке моего адреса внутри цепочки json...   -  person BelgratoSystem    schedule 25.09.2019


Ответы (1)


JsonMapQuest и $jsonMapQuest явно не одно и то же...

Вам нужно будет решить, как это назвать, а затем придерживаться его, например:

var JsonMapQuest = ...
var lat = JsonMapQuest.results.locations.latLng.lat;
var lng = JsonMapQuest.results.locations.latLng.lng;

Скорее всего, это тоже сработает, что на несколько строк меньше, потому что он пропускает всю эту бесполезную обработку:

var position = JsonMapQuest.results.locations.latLng;
person Martin Zeitler    schedule 25.09.2019
comment
Попробуйте JsonMapQuest.results.locations[0].latLng.lat. - person MQBrian; 26.09.2019