PROBLEMA java json e geolocation api google maps

Skills07

Head of Development
Staff Forum
Utente Èlite
35,283
11,435
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
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
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
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

Head of Development
Staff Forum
Utente Èlite
35,283
11,435
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
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 Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
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

Head of Development
Staff Forum
Utente Èlite
35,283
11,435
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
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
Reazioni: cdtux

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!