-

[PROBLEMA] java json e geolocation api google maps

Skills07

Moderatore
Staff Forum
6,955
1,494
Hardware Utente
CPU
Ryzen 7 2700x
Dissipatore
Stock
Scheda Madre
Aourus Gigabyte X-470
Hard Disk
Samsung Evo 850 250gb,2tb toshiba, 500gb western digital, 160gb segate
RAM
16 gb G.Skill Tridentz 3200 mhz RGB
Scheda Video
Sapphire RX 580 8gb ddr5
Monitor
Samsung Smart TV Full HD 50 Pollici/ Hp ES 24 IPS
Alimentatore
XFX 80 plus 750 watt
Case
Aerecool xpredator x3
Sistema Operativo
Windows 10 Pro 64
#1
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??
 

1nd33d

Utente Attivo
648
274
Hardware Utente
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
Hard Disk
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
Scheda Video
XFX RX480 GTR Black Edition
Scheda Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
Alimentatore
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
Sistema Operativo
Windows 10 64bit - Linux Mint 18
#2
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");
 

Skills07

Moderatore
Staff Forum
6,955
1,494
Hardware Utente
CPU
Ryzen 7 2700x
Dissipatore
Stock
Scheda Madre
Aourus Gigabyte X-470
Hard Disk
Samsung Evo 850 250gb,2tb toshiba, 500gb western digital, 160gb segate
RAM
16 gb G.Skill Tridentz 3200 mhz RGB
Scheda Video
Sapphire RX 580 8gb ddr5
Monitor
Samsung Smart TV Full HD 50 Pollici/ Hp ES 24 IPS
Alimentatore
XFX 80 plus 750 watt
Case
Aerecool xpredator x3
Sistema Operativo
Windows 10 Pro 64
#3
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:

cdtux

Utente Attivo
1,672
718
Hardware Utente
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
Hard Disk
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
Scheda Video
EVGA GTX670 SC
Monitor
Dell U2412M
Alimentatore
Corsair TX850M
Case
Corsair Graphite 760T
Sistema Operativo
Debian / Kali Linux / Win
#4
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.
 

Skills07

Moderatore
Staff Forum
6,955
1,494
Hardware Utente
CPU
Ryzen 7 2700x
Dissipatore
Stock
Scheda Madre
Aourus Gigabyte X-470
Hard Disk
Samsung Evo 850 250gb,2tb toshiba, 500gb western digital, 160gb segate
RAM
16 gb G.Skill Tridentz 3200 mhz RGB
Scheda Video
Sapphire RX 580 8gb ddr5
Monitor
Samsung Smart TV Full HD 50 Pollici/ Hp ES 24 IPS
Alimentatore
XFX 80 plus 750 watt
Case
Aerecool xpredator x3
Sistema Operativo
Windows 10 Pro 64
#5
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
 
Mi Piace: cdtux

Discussioni Simili


Entra

Guarda il video live di tomshardwareita su www.twitch.tv