简体   繁体   中英

Geo Intent Label not showing in Google Maps App

Since my Google Maps app updated recently, now version 10.11.1 , the following code does not show the label as expected, documented , and previously working:

  val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:38.8951,100.0364?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)

And neither does this version (with 0,0 immediately after geo: ):

  val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)

Neither does the example code in the official documentation show a label:

// Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Moto G5 上没有“Google Sydney”标签

No solution still even with latest map update 10.12.1 the label still does not show even if the documentation still says it should I've created an issue on Google's Issue tracker: https://issuetracker.google.com/issues/129726279

hopefully we'll have some information shortly.

Per Google , it's a bug in the Google Maps app. It's fixed in version 11.12.

I think we are going about it the wrong way here. If I was Google, I would also feel insecure about allowing developers to post directions with an abstract destination label, I am sure they never plan to fix this.

I recommend the following solution according to Google's new standards. https://developers.google.com/maps/documentation/urls/android-intents :

https://www.google.com/maps/dir/?api=1&destination=LATITUDE,LONGITUDE

If you look at most apps these days, including the ones I have built, this allows us to post a LAT/LONG for the user to go to with Google's own Address values built in as the destination label.

To actually launch the Google Maps application, simply launch a web intent, I use the application context in this case.

    fun startGoogleMaps(context: Context, lat: Double, long: Double) {
        startWebBrowser(
            context,
            Uri.parse("https://www.google.com/maps/dir/?api=1&destination=$lat,$long")
        )
    }

    fun startWebBrowser(context: Context, link: Uri?) {
        if (link != null) {
            val webIntent = Intent(Intent.ACTION_VIEW, link).apply {
                addFlags(FLAG_ACTIVITY_NEW_TASK)
            }
            if (webIntent.resolveActivity(context.packageManager) != null) {
                context.startActivity(webIntent)
            }
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM