web-dev-qa-db-ja.com

androidの特定の場所のインテントを介してGoogleマップを開きます

特定の場所を地図に表示したい1つのアプリケーションを設計しています。 Google Mapに既に配置されているStringのアドレスを渡します。以下は私のIntentコードです。

String url = "http://maps.google.com/maps?daddr="+address;
Intent intent = new Intent(Android.content.Intent.ACTION_VIEW,  Uri.parse(url));
startActivity(intent);

しかし、方向性を知るためのGoogleマップを提供してくれます。 daddrurlを使用したので、その理由はわかっていますが、特定の場所に何を使用すればよいかわかりません。そこで何を使用するか教えてください。

45
Akshay

私はこれをテストしていませんが、あなたは試すことができます:

最初の方法:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
context.startActivity(intent);

編集:これは、Googleマップ7,0では機能しない可能性があります

したがって、uriを次のように変更できます。

2番目のオプション:

String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";

ここで、mTitleは場所の名前です。

番目のオプション:

geo:0,0?q=my+street+address

4番目のオプション:

String map = "http://maps.google.co.in/maps?q=" + yourAddress;

それが機能し、役立つことを願っています:D ..

このWebサービスを使用して緯度経度を取得する

http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false

次に、このコードに渡します

    String strUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + "Label which you want" + ")";
    Intent intent = new Intent(Android.content.Intent.ACTION_VIEW, Uri.parse(strUri));

    intent.setClassName("com.google.Android.apps.maps", "com.google.Android.maps.MapsActivity");

    startActivity(intent);

私はそれがあなたを助けることを願っています

ありがとうございました。

28
Darshak

マップの最新バージョンは、より優れたソリューションを提供します。地図に住所を表示したい場合は、以下のコードを使用してください。

Uri mapUri = Uri.parse("geo:0,0?q=" + Uri.encode(address));
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);
mapIntent.setPackage("com.google.Android.apps.maps");
startActivity(mapIntent);

緯度と経度の値を使用して表示する場合は、以下の方法を使用します。

Uri mapUri = Uri.parse("geo:0,0?q=lat,lng(label)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);
mapIntent.setPackage("com.google.Android.apps.maps");
startActivity(mapIntent);

Latとlngは表示する緯度と経度です。ここのラベルはオプションです。

19
Ishaan

このようなものを使用する必要があります

Intent intent = new Intent(Android.content.Intent.ACTION_VIEW, 
    Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);

ピンを落とす

try {
    Intent intent = new Intent(Android.content.Intent.ACTION_VIEW,
        Uri.parse("geo:" + AppointmentDetailLayout.docLatitude
            + "," + AppointmentDetailLayout.docLongitude
            + "?q=" + AppointmentDetailLayout.docLatitude
            + "," + AppointmentDetailLayout.docLongitude
            + "(" + label + ")"));
    intent.setComponent(new ComponentName(
        "com.google.Android.apps.maps",
        "com.google.Android.maps.MapsActivity"));
    context.startActivity(intent);
    } catch (ActivityNotFoundException e) {

    try {
        context.startActivity(new Intent(
            Intent.ACTION_VIEW,
            Uri.parse("market://details?id=com.google.Android.apps.maps")));
    } catch (Android.content.ActivityNotFoundException anfe) {
        context.startActivity(new Intent(
            Intent.ACTION_VIEW,
            Uri.parse("http://play.google.com/store/apps/details?id=com.google.Android.apps.maps")));
    }

    e.printStackTrace();
    }
10
Hardik Trivedi

これは魅力のように機能します。 Googleマップの存在を必ず確認してください。これにより、Google以外のすべてのデバイスでも同様に機能します。このような場合、ブラウザで開きます。

また、URLにwwwを含めないでください。それ以外の場合は機能しません。

        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?q=loc:" + latitude + "," + longitude);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Only if initiating from a Broadcast Receiver
        String mapsPackageName = "com.google.Android.apps.maps";
        if (Utility.isPackageExisted(context, mapsPackageName)) {
            i.setClassName(mapsPackageName, "com.google.Android.maps.MapsActivity");
            i.setPackage(mapsPackageName);
        }
        context.startActivity(i);
4
sivag1
  try {
                    Intent intent = new Intent(Android.content.Intent.ACTION_VIEW,
                            Uri.parse("http://maps.google.com/maps?saddr=" + src_lat+ "," + src_lng + "&daddr=" + des_lat + "," + des_lng));
                    startActivity(intent);
                }catch (ActivityNotFoundException  ane){

                    Toast.makeText(activity, "Please Install Google Maps ", Toast.LENGTH_LONG).show();
                }catch (Exception ex){
                    ex.getMessage();
                }
            }
        });
2
Rehan Sarwar
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.Android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

このドキュメントを参照

2
jobinrjohnson

UriBuilderを使用してコードをクリーンにし、マップを開くことができるデバイスにアクティビティがない場合に条件を処理するためのこのヘルパーメソッド

public static boolean openMap(Context context, String address) {
    Uri.Builder uriBuilder = new Uri.Builder()
            .scheme("geo")
            .path("0,0")
            .appendQueryParameter("q", address);
    Intent intent = new Intent(Intent.ACTION_VIEW, uriBuilder.build());
    if (intent.resolveActivity(context.getPackageManager()) != null) {
        context.startActivity(intent);
        return true;
    }
    return false;
}
1
HendraWD

https://www.google.com/maps/dir//37.4219983,-122.084

文字列の場所= " https://www.google.com/maps/dir// " +緯度+ "、" +経度; try {SmsManager sms = SmsManager.getDefault(); // Android SmsManagerを使用sms.sendTextMessage(number、null、message + location、null、null); //数値とテキストを追加するToast.makeText(getApplicationContext()、 "Message Sent"、Toast.LENGTH_SHORT).show(); } catch(例外e){Toast.makeText(this、 "SMSは送信されません。電話番号/ネットワークを確認してください"、Toast.LENGTH_SHORT).show(); e.printStackTrace(); }

0
Ashwin H