How do I show a marker in Maps launched by geo URI Intent?

后端 未结 7 1649
离开以前
离开以前 2020-11-28 02:47

I have a application where I want to show different locations (one at the time, picked by user input) by launching Google Maps with their specific geo coordinates.

I

相关标签:
7条回答
  • 2020-11-28 03:12

    There are many more options to launch a Google map using an intent...

       Double myLatitude = 44.433106;
       Double myLongitude = 26.103687;
       String labelLocation = "Jorgesys @ Bucharest";
    

    1)

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude  + ">,<" + myLongitude + ">?q=<" + myLatitude  + ">,<" + myLongitude + ">(" + labelLocation + ")"));
        startActivity(intent);
    

    2)

    String urlAddress = "http://maps.google.com/maps?q="+ myLatitude  +"," + myLongitude +"("+ labelLocation + ")&iwloc=A&hl=es";
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
        startActivity(intent);
    

    3)

       String urlAddress = "http://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + myLatitude  + "," + myLongitude + "&fov=90&heading=235&pitch=10&sensor=false";
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
            startActivity(intent);
    
    0 讨论(0)
  • 2020-11-28 03:13

    The accepted answer is correct, except when your label has an ampersand (&) in it.

    Looking at A Uniform Resource Identifier for Geographic Locations ('geo' URI):

    Section 5.1 states:

    if the final URI is to include a 'query' component, add the component delimiter "?" to the end of the result, followed by the encoded query string.

    Unfortunately for us, doing this will also escape the '=' which is not what we want.

    We should do this:

    String label = "Cinnamon & Toast";
    String uriBegin = "geo:12,34";
    String query = "12,34(" + label + ")";
    String encodedQuery = Uri.encode(query);
    String uriString = uriBegin + "?q=" + encodedQuery;
    Uri uri = Uri.parse(uriString);
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
    startActivity(intent);
    
    0 讨论(0)
  • 2020-11-28 03:18

    Try appending (LocationMarkerName) to the geo: uri. For example, "geo:,?z=17(LocationMarkerName)"

    In Google Maps on Android searching for 23.0980,30.6797 (NamedMarker), it seems to centre the map and position a marker with name NamedMarker at that position.

    0 讨论(0)
  • 2020-11-28 03:21

    This string works well for me:

    String geoUriString="geo:"+lat+","+lon+"?q=("+head+")@"+lat+","+lon;
    Uri geoUri = Uri.parse(geoUriString);
    Log.e(TAG, "String: "+geoUriString);
    Intent mapCall  = new Intent(Intent.ACTION_VIEW, geoUri);
    startActivity(mapCall);
    
    0 讨论(0)
  • 2020-11-28 03:24

    I just confirmed the following snippet from @Kenton Price still works on Android 4.4 (KitKat):

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
    startActivity(intent);
    
    0 讨论(0)
  • 2020-11-28 03:27

    Try this:

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

    You can omit (Label+Name) if you don't want a label, and it will choose one randomly based on the nearest street or other thing it thinks relevant.

    0 讨论(0)
提交回复
热议问题