2017-09-13 2 views
0

Ich habe ein 24-Stunden-Lehrbuch verfolgt und eine Android-App erstellt, die Google Maps starten und zu einem bestimmten Ort navigieren soll, basierend auf geografisch fest codierten Längen- und Breitenkoordinaten. Wenn ich die App starte und den Code ausführe, öffnet sie Google Maps oder Google Earth und verwendet immer meinen aktuellen Standort. Wie verhindere ich das?Standardpfad auf Android-Telefon mit Java überschreiben

Ich versuche, meine App auf einen bestimmten Längen- und Breitengrad zu bringen, aber wenn Google Maps oder Google Earth gestartet wird, wird immer der aktuelle Standort verwendet. Java-Code ist wie folgt:

Button mapButton = (Button) findViewById(R.id.button2); 
mapButton.setOnClickListener(new View.OnClickListener() { 
    @override 
    public void onClick(View view) { 
    String geoURI = "geo:37.422,-122.0847z=23"; 
    Uri geo = Uri.parse(geoURI); 
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, geo); 
    if (mapIntent.resolveActivity(getPackageManager()) != null) { 
     startActivity(mapIntent); 

Wie bekomme ich es das Standardverzeichnis außer Kraft zu setzen und gehen zu den Koordinaten ich oben hart codiert haben?

+2

https: // Stackoverflow .com/questions/3990110/how-to-show-marker-in-maps-lanciert-von-geo-uri-intent – neethu

Antwort

1

Looking at the documentation, die Zeile:

String geoURI = "geo:37.422,-122.0847z=23"; 

Erscheinen ungültige Syntax zu sein, aber um es zu vergrößern wollen könnte. Versuchen:

String geoURI = "geo:37.422,-122.0847?z=23"; 

Zoom-Ebene geht nur bis zu 21, aber so versuchen auch:

String geoURI = "geo:37.422,-122.0847?z=21"; 

Wenn keine Arbeit, eine grundlegende Zeichenfolge ohne Zoom verwenden:

String geoURI = "geo:37.422,-122.0847"; 
+0

Vielen Dank. Ja, es war ein Syntaxfehler. Hinzufügen des "?" und das Ändern der Zoomstufe auf z = 21 behob das Problem – Pickles57

0

Try dies:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)")); 
startActivity(intent); 

Sie können weglassen (Label + Name), wenn Sie kein Label möchten, und es wird eines nach dem Zufallsprinzip ausgewählt, basierend auf der nächsten Straße oder anderen Dingen, die es für relevant hält.

0

Sie können ein LatLng-Objekt erstellen und Google Map mitteilen, dass es den Ort laden soll. Code zu tun, das wird so etwas wie dieses:

double lat=26.52719; 
double lng=88.72448; 
LatLng myLocation = new LatLng(lat,lng); 
       if(this.googleMap !=null){ 
        this.googleMap.addMarker(new MarkerOptions().position(myLocation).title("Your current Location").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
        this.googleMap.moveCamera(CameraUpdateFactory.newLatLng(myLocation)); 
       } 

Erinnern Sie dies in onMapReady Rückruf gelten sollten und Ihren aktuellen Standort Platzierung in Google-Map deaktivieren können Sie tun

this.googleMap.setMyLocationEnabled(true);