web-dev-qa-db-ja.com

geo URI Intentによって起動されたマップにマーカーを表示するにはどうすればよいですか?

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

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

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

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

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

105
Specur

これを試して:

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

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

246
Kenton Price

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

地理的場所の統一リソース識別子(「geo」URI)

セクション5.1の状態:

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

残念ながら、これを行うと '='がエスケープされますが、これは望んでいないことです。

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

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);
44
xorgate

インテントを使用して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);
40
Jorgesys

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

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);
5
The HCD

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

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

2
joshuau

@Kenton Priceの次のスニペットがAndroid 4.4(KitKat)で引き続き動作することを確認しました。

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

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

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

0
John J Smith