2011-06-04 6 views
0

J'ai une liste d'adresses, je veux maintenant récupérer leurs longitudes et latitudes. Je voudrais utiliser l'API google maps via java. Comment irais-je récupérer un seul ensemble de coordonnées pour une adresse? (Parce que je pourrais alors mettre en œuvre facilement multiple)Récupérer les coordonnées de google maps api

+0

voulez-vous connaître l'API pour cela? –

+0

je voudrais savoir comment récupérer les coordonnées du fichier json retourné d'un appel à l'API pour une adresse spécifique .. je voudrais aussi savoir comment demander le fichier json lui-même .. tous de l'intérieur java – molleman

+0

vous pouvez passer par le lien que j'ai mentionné dans ma réponse. Vous pouvez obtenir tous les détails. –

Répondre

3

Voici comment je l'ai fait à la fin

public static String getCordinates(String address,String county) throws IOException, ParserConfigurationException, SAXException{ 
    String thisLine; 

    address = address.replace(",", "+"); 
    address = address.replace(" ", "+"); 
    county = county.replace(" ", ""); 

    String fullAddress = address+"+"+county; 
    System.out.println(fullAddress); 

    URL url = new URL("http://maps.google.com/maps/geo?q="+fullAddress+"&output=xml&key=ABQIAAAANGTAqDyDam_07aWkklK2NBSD41w" + 
      "X8VhCBpuiDVjGbFNuXE31lhQB8Gkwy-wmYbmaHIbJtfnlR9I_9A"); 

    BufferedReader theHTML = new BufferedReader(new InputStreamReader(url.openStream())); 

    FileWriter fstream = new FileWriter("url.xml"); 
    BufferedWriter out = new BufferedWriter(fstream); 
    while ((thisLine = theHTML.readLine()) != null) 
     out.write(thisLine); 
    out.close(); 

    File file = new File("url.xml"); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document doc = db.parse(file); 
    doc.getDocumentElement().normalize(); 
    NodeList nl = doc.getElementsByTagName("code"); 
    Element n = (Element)nl.item(0); 
    String st = n.getFirstChild().getNodeValue(); 

    if (st.equals("200")) 
    { 
     NodeList n2 = doc.getElementsByTagName("coordinates"); 
     Element nn = (Element)n2.item(0); 
     String st1 = nn.getFirstChild().getNodeValue(); 


     return st1; 
    } 
    else 
    { 
     return null; 
    } 


} 
2

Vous pouvez utiliser cette Google API

+0

comment est-ce que j'irais appeler ceci dans Java, ou est-ce qu'il y a un exemple d'employer ceci dans java? – molleman

+0

vous devez faire une demande http à partir de Java. Juste google dehors la fonctionnalité. –

5

Vous pouvez également utiliser l'API Java Google géocodage GeoGoogle comme ceci:

// Initialize a new GeoAddressStandardizer-class with your API-Key 
GeoAddressStandardizer st = new GeoAddressStandardizer(apikey); 
// Get a list of possible matching addresses 
List<GeoAddress> addresses = st.standardizeToGeoAddresses(address); 
// Get the first address (like you posted above) 
GeoAddress address = addresses.get(0); 
// Get the coordinates for the address 
GeoCoordinate coords = address.getCoordinate(); 
// Longitude 
double longitude = coords.getLongitude(); 
// Latitude 
double latitude = coords.getLatitude(); 
0

Utilisation de l'API avec restAssurd est un moyen facile:

public static String[] getCoordinates(String address, String county) throws IOException, ParserConfigurationException, SAXException { 

    address = address.replace(",", "+"); 
    address = address.replace(" ", "+"); 
    county = county.replace(" ", ""); 

    String fullAddress = address+"+"+county; 
    System.out.println(fullAddress); 

    URL url = new URL("http://maps.google.com/maps/api/geocode/json?address="+fullAddress+"&sensor=false"); 

    Response res = given(). 
      when(). 
      get(url); 
    JsonPath jp = new JsonPath(res.asString()); 
    String lat = jp.get("results.geometry.location.lat").toString(); 
    String lng = jp.get("results.geometry.location.lng").toString(); 

    String[] location = new String[2]; 
    location[0] = lat; 
    location[1] = lng; 

    return location; 
}