PROBLEMA java json e geolocation api google maps

Pubblicità

Skills07

Head of Development
Staff Forum
Utente Èlite
Messaggi
39,339
Reazioni
13,285
Punteggio
253
Salve amici

sto seguendo questa guida:
https://developers.google.com/maps/docu ... o#overview

perchè avrei bisogno di tracciare gli hotspot tramite macaddress in java.
qui nella guida dice che l'api come richiesta vuole un argomento di questo tipo:

Codice:
{
  "macAddress": "01:23:45:67:89:AB",
  "signalStrength": -65,
  "age": 0,
  "channel": 11,
  "signalToNoiseRatio": 40
}

io mi chiedo come posso fare cio??

sto seguendo questo codice che però fa una cosa similare con quest api
https://developers.google.com/maps/docu ... ding/intro

il mio codice

Codice:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonReader {



  public static void main(String[] args) throws ParseException  {


            InputStream inputStream = null;
            String json = "";

            try {           
                HttpClient client = new DefaultHttpClient();  
                HttpPost post = new HttpPost("https://maps.googleapis.com/maps/api/geocode/json?italy");
                HttpResponse response = client.execute(post);
                HttpEntity entity = response.getEntity();
                inputStream = entity.getContent();
            } catch(Exception e) {
            }

            try {           
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"utf-8"),8);
                StringBuilder sbuild = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sbuild.append(line);
                }
                inputStream.close();
                json = sbuild.toString();               
            } catch(Exception e) {
            }


            //now parse
            JSONParser parser = new JSONParser();
            Object obj = parser.parse(json);
            JSONObject jb = (JSONObject) obj;

            //now read
            JSONArray jsonObject1 = (JSONArray) jb.get("results");
            JSONObject jsonObject2 = (JSONObject)jsonObject1.get(0);
            JSONObject jsonObject3 = (JSONObject)jsonObject2.get("geometry");
            JSONObject location = (JSONObject) jsonObject3.get("location");

            System.out.println( "Lat = "+location.get("lat"));
            System.out.println( "Lng = "+location.get("lng"));


        }
    }

come faccio per usarlo riaddattandolo alla mia ricerca e alla mia api??
 
Ora non posso testare il codice, ma penso che l'adattamento sia piuttosto semplice...
Innanzi tutto l'indirizzo della richiesta cambia, non più
Codice:
https://maps.googleapis.com/maps/api/geocode/json?italy
ma
Codice:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
ovviamente ti serve una google api key.
Poi nella fase di parsing, dovrai fare il get su parametri diversi, che sono "location" e "accuracy"
Presumo una cosa del genere, a giudicare dalla struttura del JSON:
Codice:
JSONObject jsonLocation = (JSONObject) jb.get("location");
float lat = jsonLocation.get("lat");
float lng = jsonLocation.get("lng");
float acc = jb.get("accuracy");
 
Ora non posso testare il codice, ma penso che l'adattamento sia piuttosto semplice...
Innanzi tutto l'indirizzo della richiesta cambia, non più
Codice:
https://maps.googleapis.com/maps/api/geocode/json?italy
ma
Codice:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
ovviamente ti serve una google api key.
Poi nella fase di parsing, dovrai fare il get su parametri diversi, che sono "location" e "accuracy"
Presumo una cosa del genere, a giudicare dalla struttura del JSON:
Codice:
JSONObject jsonLocation = (JSONObject) jb.get("location");
float lat = jsonLocation.get("lat");
float lng = jsonLocation.get("lng");
float acc = jb.get("accuracy");


si ma ciò che hai scritto non è ciò che serve a me...
ho messo il codice della prima parte perchè è funzionante (restituisce le coordinate dell'italia).

il secondo è la geolocation ti permette di localizzare oggetti sulla mappa tramite varie variabili nel mio caso gli hotspot via macaddress.
il mio problema è creare un app java che utilizza questo:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY

sto cercando di capire come creare un Json con i miei oggetti e deve essere del tipo linkato sopra con nome wifiAccessPoint(variabili) e google maps ti restituirà la posizione in lat lng.
Il problema che ho io è creare una post per mandare il mio JSON e fare una get per ricevere quello di GOOGLE


forse sono riuscito a risolvere ma devo fare un pò di testing


- - - Updated - - -

up perchè non riesco a risolvere
 
Ultima modifica:
Premetto che non conosco java, ecc.., quindi potrei dire una marea di ca... :asd:

Una richiesta POST dovrebbe essere una cosa di questo tipo:
Codice:
POST /somepage.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
dato1=dato1&dato2=dato2

Non ho la più pallida idea di come si faccia in java, comunque credo che potresti utilizzare l'httpclient di apache per gestire il tutto (sia la request che la response).

Stando a quanto indicato qua, una volta inviata una richiesta POST, in caso vada a buon fine (quindi codice di stato 200), dovrebbe ritornare una response contenente anche il risultato della richiesta che, in questo caso, presumo sia il json con latitudine/longitudine (come indicato qua).
Quindi non devi fare nessuna GET per ricevere json di Google.
 
Premetto che non conosco java, ecc.., quindi potrei dire una marea di ca... :asd:

Una richiesta POST dovrebbe essere una cosa di questo tipo:
Codice:
POST /somepage.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
dato1=dato1&dato2=dato2

Non ho la più pallida idea di come si faccia in java, comunque credo che potresti utilizzare l'httpclient di apache per gestire il tutto (sia la request che la response).

Stando a quanto indicato qua, una volta inviata una richiesta POST, in caso vada a buon fine (quindi codice di stato 200), dovrebbe ritornare una response contenente anche il risultato della richiesta che, in questo caso, presumo sia il json con latitudine/longitudine (come indicato qua).
Quindi non devi fare nessuna GET per ricevere json di Google.



sono riuscito e la response che ti da google è un json con location(coordinate lat,lnt + accuracy) ma il problema è che non è precisa manco in questo caso
 
Pubblicità
Pubblicità
Indietro
Top