Autore Topic: posizione su mappa e layer KML  (Letto 1473 volte)

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
posizione su mappa e layer KML
« il: 11 Gennaio 2012, 01:28:53 CET »
0
salve,

ho creato questa applicazione che mostra su maps il punto prescelto

Codice (Java): [Seleziona]
package test_googlemap.java;

import android.os.Bundle;
import android.widget.Button;
import android.view.View;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.MyLocationOverlay;
import java.util.List;


public class Test_GoogleMap extends MapActivity {

        private MapView mappa;
        MapController mapController;
        private MyLocationOverlay myLocationOverlay;
       
        Button bottone_c, bottone_strade, bottone_satellite;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        bottone_c = (Button) findViewById(R.id.button_c);
        bottone_strade = (Button) findViewById(R.id.button_strade);
        bottone_satellite = (Button) findViewById(R.id.button_satellite);
       
        //Otteniamo il riferimento alla MapView
        mappa = (MapView) findViewById(R.id.mappa_OBJ);
        //Otteniamo il riferimento al controller
        mapController = mappa.getController();
        //Rendiamo la mappa cliccabile e quindi ne permettiamo il pan
        mappa.setClickable(true);
        //Utiliziamo i controlli predefiniti per la gestione delle operazioni di zoom
        mappa.setBuiltInZoomControls(true);
        //Impostiamo la distanza dello Zoom a 12 (valori validi da 1 a 21).
        mapController.setZoom(16);
        //tipo di mappa da visualizzare
        mappa.setStreetView(true); //solo strade
        mappa.setSatellite(false); //satellitare
       
        //Aggiungiamo l'overlay sulla mappa per disegnare la nostra posizione
        myLocationOverlay = new MyLocationOverlay(this, mappa);
        List<Overlay> overlays = mappa.getOverlays();
        overlays.add(myLocationOverlay);
        myLocationOverlay.enableMyLocation();
       
       
        bottone_c.setOnClickListener(new View.OnClickListener()
        {
                @Override
            public void onClick(View v)
            {  
                //Aggiorna il marker della mappa       
                mappa.invalidate();
               
                //coordinate punto da visualizzare
                Double lat = 38.57865455740639 * 1E6 , lng = 15.937486627181661 * 1E6;
                //per centrare la mappa sulle coordinate
                GeoPoint centro = new GeoPoint(lat.intValue(), lng.intValue());
                //manda questo punto alla mappa
                mapController.animateTo(centro);

                //mostra il nord
                myLocationOverlay.enableCompass();
            }});
        bottone_strade.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {  
                mappa.setStreetView(true); //solo strade
                mappa.setSatellite(false);
            }});
        bottone_satellite.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {  
                mappa.setSatellite(true); //satellitare
                mappa.setStreetView(false);
            }});        

    }
   
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
 
}

il problema è che non mi visualizza il puntino quando premo sul pulsante bottone_c, perchè? come risolvo?

inoltre vorrei poter importare un file KML dalla sdcard e visualizzarlo sulla mappa, magari premendo un altro bottone. è possibile?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:posizione su mappa e layer KML
« Risposta #1 il: 11 Gennaio 2012, 10:49:55 CET »
0
Ma intendi che non si sposta proprio sul punto da te inserito o non ti visualizza graficamente un punto?
Se è il secondo caso è normale perchè non gli hai detto di usare nessun marker. In android per fare un marker non c'è niente di definito, devi fartelo tu.
Prova a leggerti questa guida per capire meglio


http://mobiforge.com/developing/story/using-google-maps-android

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
Re:posizione su mappa e layer KML
« Risposta #2 il: 11 Gennaio 2012, 14:01:58 CET »
0
scusa, ho sbagliato a scrivere, perchè il punto lo visualizza, ma nella posizione della cella (AGPS) e del GPS e non dove voglio io, in pratica lo visualizza se lo rileva da GPS.

Ora provo con i marker, ma come si cancellano, uno o tutti , poi?

e per il kml?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:posizione su mappa e layer KML
« Risposta #3 il: 12 Gennaio 2012, 10:31:06 CET »
0
Nel codice che hai postato non vedo nessun listener per il gps quindi non so cosa tu abbia scritto in quel caso.
Su come gestire i marker trovi le risposte nel link che ti ho mostrato.
Per quanto riguarda il kml invece esistono diverse librerie o classi che fanno il parser del file e ti disegnano il percorso sulla mappa

Offline systemgvp

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Ideos
  • Play Store ID:
    systemgvp
  • Sistema operativo:
    Windows 7
Re:posizione su mappa e layer KML
« Risposta #4 il: 12 Gennaio 2012, 11:07:19 CET »
0
purtroppo sono nuovo su Android e java e sinceramente non ho idea di cosa sia un parser, esiste qualche esempio sulla rete per l'uso dei kml?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:posizione su mappa e layer KML
« Risposta #5 il: 12 Gennaio 2012, 11:13:02 CET »
0
Dato che in sostanza kml non è altro che un file xml dove sono indicati dei punti un parser non fa altro che analizzare questo file (se non sai cos'è un file xml dovresti un pò documentarti prima) e prendersi i dati puri che gli servono. Ovviamente sulla rete esistono diversi esempi


http://www.anddev.org/google_driving_directions_-_mapview_overlayed-t826.html


http://csie-tw.blogspot.com/2009/06/android-driving-direction-route-path.html