110

特定の地理座標でGoogleマップを起動して、さまざまな場所(一度に1つずつ、ユーザー入力で選択)を表示したいアプリケーションがあります。

私は現在これを使用しています(もちろん実際の緯度と経度の値で):

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);

指定されたポイントのインジケーターやマーカーが表示されないことを除けば、これはまさに私が望んでいることです。それはその場所にのみ集中します。

MapViewを使用せずにマーカーなどを含める方法はありますか?

4

7 に答える 7

260

これを試して:

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

ラベルが必要ない場合は、(Label + Name)を省略できます。ラベルは、最寄りの通りなど、関連性があると思われるものに基づいてランダムに選択されます。

于 2011-09-13T17:31:30.097 に答える
48

インテントを使用してGoogleマップを起動するオプションは他にもたくさんあります...

   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);
于 2014-02-04T16:29:49.943 に答える
45

ラベルにアンパサンド(&)が含まれている場合を除いて、受け入れられた答えは正しいです。

地理的位置のURI('geo' URI)を見る:

セクション5.1は次のように述べています。

最終的なURIに「query」コンポーネントを含める場合は、コンポーネント区切り文字「?」を追加します。結果の最後に、エンコードされたクエリ文字列が続きます。

残念ながら、これを行うと「=」もエスケープされますが、これは私たちが望んでいることではありません。

これを行う必要があります:

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);
于 2012-03-22T15:22:13.367 に答える
6

この文字列は私にとってうまく機能します:

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);
于 2012-01-27T10:50:42.490 に答える
2

geo:uriに(LocationMarkerName)を追加してみてください。たとえば、「geo:、?z = 17(LocationMarkerName)」

23.0980,30.6797(NamedMarker)を検索しているAndroid上のGoogleマップでは、マップを中央に配置し、その位置にNamedMarkerという名前のマーカーを配置しているようです。

于 2011-01-17T11:51:57.143 に答える
1

@KentonPriceの次のスニペットがAndroid4.4(KitKat)でも機能することを確認しました。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
于 2014-01-22T06:13:25.260 に答える
0

マップ上にマーカーを描画するために、MapViewでオーバーレイを使用しただけです。ビューにマップが表示されている場合は、ビューに画像を描画するのと同じように、画面の中央にマーカーを描画するだけでよい場合があります。

ただし、マーカーは実際のマップ座標にリンクされませんが、それが単なる静的ビューである場合は、リンクされる可能性があります。

于 2010-10-21T19:47:00.907 に答える