2009-10-18 7 views
1

J'utilise l'API Google Maps pour effectuer une recherche inversée d'une adresse, en particulier le pays, la ville et le code postal. Le problème que j'ai avec geocoder lorsque vous entrez un champ spécifique, vous obtenez une gamme de résultats basés sur la précision des détails de l'adresse. Par exemple, si vous cliquez sur la rue, vous obtenez une précision de détail de 8 et l'adresse ressemble à ceci; "rue, ville, indicatif de pays" ou "rue, code postal de la ville, code du pays". Et si vous cliquez sur un autre emplacement, vous pouvez obtenir l'exactitude des détails de l'adresse de 5 qui retourne; code postal de la ville, code du pays.Adresse de recherche inversée de l'API Google Maps Précision Précision

Tout ce que je cherche, c'est la ville, le code postal et le pays. Existe-t-il un moyen de forcer Google Maps à retourner l'exactitude des détails des adresses de 5 tout le temps ou de renvoyer les éléments divisés en différentes parties, à savoir la ville, le code postal et le pays.

C'est le code que je utilise pour obtenir l'information:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps JavaScript API Example: Reverse Geocoder</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAMkjr3Dq_jK6GSFYDFzaHTBRoJ0TBOI_XK4bTNi9dL2l04KlxphRNL_k0peOib9IHF6T2KwlVmOb6uQ" type="text/javascript"></script> 
    <script type="text/javascript"> 

     var map; 
     var geocoder; 
     var address; 

     function initialize() { 

      var zoom = 10; 

      map = new GMap2(document.getElementById("map_canvas")); 
      map.setCenter(new GLatLng(40.730885, -73.997383), zoom); 
      map.setUIToDefault(); 
      GEvent.addListener(map, "click", getAddress); 
      geocoder = new GClientGeocoder(); 
     } 

     function getAddress(overlay, latlng) { 
      if (latlng != null) { 
       address = latlng; 
       geocoder.getLocations(latlng, showAddress); 
      } 
     } 

     function showAddress(response) { 
      map.clearOverlays(); 
      if (!response || response.Status.code != 200) { 
       alert("Status Code:" + response.Status.code); 
      } else { 
       place = response.Placemark[0]; 
       point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); 
       marker = new GMarker(point); 
       map.addOverlay(marker); 

       var message = '<b>orig latlng:</b>' + response.name + '<br/>' + 
           '<b>latlng:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' + 
           '<b>Status Code:</b>' + response.Status.code + '<br>' + 
           '<b>Status Request:</b>' + response.Status.request + '<br>' + 
           '<b>Address:</b>' + place.address + '<br>' + 
           '<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' + 
           '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode; 

       marker.openInfoWindowHtml(message); 
      } 
     } 


    </script> 
    </head> 

    <body onload="initialize()"> 
    <div id="map_canvas" style="width: 800px; height: 600px"></div> 
    </body> 
</html> 

Toute aide serait grandement appréciée. Mon dernier recours serait d'analyser la chaîne d'adresse, mais il se sent comme une exagération. Il doit y avoir une manière plus propre.

Je regarde actuellement la méthode getLocations(), peut-être que l'analyse du résultat JSON pourrait générer les champs que je recherche.

Thanx.

Répondre

1

Vous aurez besoin de gérer différents niveaux de précision dans votre application ... l'API ne peut pas tout faire pour vous;). Je suis d'accord que ce serait bien si vous pouviez dicter au géocodeur le niveau de précision que vous souhaitez, il n'est tout simplement pas là pour le moment. Peut-être que google l'implémentera dans le futur mais, d'ici là, vous devrez analyser les résultats dans votre application. Ce poste a une répartition des différentes valeurs de précision: Picking the most accurate geocode

Questions connexes