JSON Parsing Bing Maps Response - PullRequest
       7

JSON Parsing Bing Maps Response

0 голосов
/ 14 марта 2011

Я пытаюсь проанализировать обратное географическое местоположение с помощью Bing Maps.

http://www.microsoft.com/maps/isdk/ajax/ Найти информацию> Обратный поиск

Если вы посмотрите на код, когда выпосмотрите адрес, вы получите это обратно

function _f1300044038369() {
    return {
        "d": {
            "__type": "Microsoft.VirtualEarth.Engines.Core.Geocoding.ReverseGeocodeResponse",
            "Results": [{
                "Name": "SW 35th Ave, Tualatin, OR 97062",
                "Type": 0,
                "BestLocation": {
                    "Precision": 0,
                    "Coordinates": {
                        "Latitude": 45.378872752189636,
                        "Longitude": -122.71288096904755
                    }
                },
                "Locations": [{
                    "Precision": 0,
                    "Coordinates": {
                        "Latitude": 45.378872752189636,
                        "Longitude": -122.71288096904755
                    }
                }],
                "BestView": {
                    "NorthEastCorner": {
                        "Latitude": 45.382735469760313,
                        "Longitude": -122.70554921472814
                    },
                    "SouthWestCorner": {
                        "Latitude": 45.37501003461896,
                        "Longitude": -122.72021272336696
                    },
                    "Type": 0,
                    "Center": {
                        "Latitude": 45.378872884129805,
                        "Longitude": -122.71288096904755
                    }
                },
                "Shape": null,
                "Address": {
                    "AddressLine": "SW 35th Ave",
                    "Locality": "Tualatin",
                    "PostalTown": "",
                    "District": "",
                    "AdminDistrict": "OR",
                    "PostalCode": "97062",
                    "CountryRegion": "United States",
                    "FormattedAddress": "SW 35th Ave, Tualatin, OR 97062"
                },
                "CountryRegion": 244,
                "MatchConfidence": 1,
                "MatchCode": 1
            }],
            "ResponseSummary": {
                "Copyright": "Copyright © 2011 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
                "StatusCode": 0,
                "AuthResultCode": 0,
                "ErrorMessage": null,
                "TraceId": "dc1c3b20-6345-484c-9662-4df504d8977e|SN1M001054"
            }
        }
    }.d;
}
if (typeof closeDependency !== 'undefined') {
    closeDependency('1300044038369');
}

Код, который я использую в настоящее время, разбивает «Имя» на его разделы, чтобы я мог использовать его в другом месте.изменить вышеуказанный код, чтобы использовать раздел, в котором уже есть адресная строка, местоположение, почтовый центр и т. д.

Ответы [ 3 ]

4 голосов
/ 14 марта 2011
function GetResults(locations) {
    var locations = locations.Results;
    if (locations) {
        for (var i = 0; i < locations.length; i++) {
            var addr = locations[i].Address,
                loc_array = new Array()
                addresscode, citycode, country, statecode, zipcode;
            //
            addresscode = addr.AddressLine;
            citycode = addr.Locality;
            country = addr.CountryRegion;
            statecode =addr.AdminDistrict;
            zipcode = addr.PostalCode;
            loc_array[0] = addresscode;
            loc_array[1] = citycode;
            loc_array[2] = statecode;
            loc_array[3] = zipcode;
            window.locationArray = loc_array;
        }
    }

Это будет делать то, что вы хотите.Но это не очень хорошая практика.Прежде всего - если у вас есть несколько мест, каждое из них перезапишет другое.Во-вторых, это загрязняет пространство имен окна, что не рекомендуется.

0 голосов
/ 12 апреля 2011

Единственное, что вам нужно сделать, это изменить строки loc_array:

function GetResults(locations) {
    var s, location;
    if (locations) {
        for (var i = 0; i < locations.length; i++) {
            s = locations[i].Name;
            location = locations[i];
            //
            var loc_array = [];
            loc_array[0] = location.Address.AddressLine;
            loc_array[1] = location.Address.Locality;
            loc_array[2] = location.Address.AdminDistrict;
            loc_array[3] = location.Locations.Coordinates.Latitude;
            loc_array[4] = location.Locations.Coordinates.Longitude;
            // ...
            window.locationArray = loc_array;
        }
    }
}
0 голосов
/ 14 марта 2011

Похоже, вы уже передаете объект "Results" в функцию в качестве аргумента "location", поэтому я буду работать в этом предположении.Вместо ссылки на местоположения [i] .Name, вы можете ссылаться на местоположения [i] .Address.Это даст вам объект, который должен иметь все необходимые вам свойства.

function GetResults(locations) {
  if (locations) {
    for (var i = 0; i < locations.length; i++) {
      var s = locations[i].Address;
      //
      var address = s.AddressLine;
      var city = s.Locality;
      var state = s.AdminDistrict;
      var zip = s.PostalCode;
      var country = s.CountryRegion

      // and so on...
    }
  }

}

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