2011-03-14 8 views
0

J'essaie d'analyser une géolocalisation inversée à l'aide de Bing Maps.JSON Analyse syntaxique Bing Maps Réponse

http://www.microsoft.com/maps/isdk/ajax/ trouver des informations> Inverse Trouver

Si vous regardez le code, lorsque vous regardez une adresse, vous obtenez ce retour

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'); 
} 

Le code que j'utilise actuellement parse le « Nom » dans ses sections afin que je puisse l'utiliser ailleurs. Je veux changer le code ci-dessus pour utiliser la section qui a déjà la ligne d'adresse, l'emplacement, le post-poste, etc.

Répondre

4
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; 
     } 
    } 

Cela fera ce que vous voulez. Mais ce n'est pas très pratique. Tout d'abord, si vous avez plusieurs emplacements, chacun écrasera l'autre. Deuxièmement, cela pollue l'espace de noms de fenêtre qui n'est pas recommandé.

+0

Obtenir les valeurs NULL – BlindingDawn

+0

appelez-vous comme 'GetResults (_f1300044038369())'? Si oui, vous devez faire 'GetResults (_f1300044038369(). Résultats)'. Si vous faites cela, ce n'est pas indéfini - voir ce violon si vous devez http://jsfiddle.net/idbentley/G2Pkk/ – idbentley

+0

Je l'appelais comme Microsoft l'a dans le lien ci-dessus. http://www.microsoft.com/maps/isdk/ajax/ Rechercher des informations> Inverser Rechercher – BlindingDawn

0

Il semble que vous transmettiez déjà l'objet "Results" dans la fonction en tant qu'argument "locations", donc je vais travailler sous cette hypothèse. Au lieu de référencer les emplacements [i] .Name, vous pouvez référencer les emplacements [i] .Address. Cela vous donnera un objet qui devrait avoir toutes les propriétés dont vous avez besoin.

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... 
    } 
    } 

}

+0

Obtention de valeurs nulles – BlindingDawn

+0

Qu'est-ce que null? fais un fichier console.log (emplacements); pour voir si ce que vous transmettez est indéfini, également pour vérifier l'arborescence d'objets qui est sortie dans le journal pour inspecter les noms de propriété réels –

0

La seule chose que vous devez faire est de changer vos lignes 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; 
     } 
    } 
}