Androidアプリのgeoインテント対応状況

#概要
Androidアプリのgeoインテント対応状況を調べてメモしてます。

geoインテントに対応するアプリは多いにもかかわらず、対応することを明示しているアプリは少なく、またgeoインテントの仕様解釈もアプリによってまちまちです。
しかしながら対応するアプリについて横断的な資料がないので書き残しておきます。

#geoインテント
地理座標を表現したURLのようなものをgeo URI(以降縮めてgeoURI)と呼ぶ。
http://...のリンクを開くとブラウザがWEBサイトを開くように、geo:...のgeoURIを受け付けるアプリがそこに記載された座標で地図を開いたりする。
例: `geo:35.660411,139.729265`

そのgeoURIをアプリに送り付ける為のインテントをgeoインテントと称する。

geoインテントの発行処理自体は簡単で、Activityの中から以下の1行で試すことができる:

```
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("geo:35.660411,139.729265")));
```

あるいはadbから手動で発行することができる:

```
adb shell am start -a android.intent.action.VIEW -d "geo:35.660411,139.729265"
```

##geoURIフォーマット
多くのアプリで採用されている、Googleマップでの実装仕様を次に示す。

* 基本書式: `geo:[lat,lng][?param[&param]...]`
    * lat,lng: 緯度,経度
    * param:
        * `z=zoom` …ズームを指定する
        * `q=lat,lng` …座標にピンを立てる
        * `q=lat,lng(label)` …座標に名前付きピンを立てる
        * `q=query` …検索文字列を元に位置を検索する
    * zoomは実数でも受け付ける。ただし、他のアプリでは小数部を含む場合に動作しないものが多いので注意が必要
    * `q=...` で位置情報を供給する場合、`geo:` 直後のlat,lngは `0,0` または空文字列に省略できる
        * ただしその場合z=zoomは無視される
    * `q=...` で供給される文字列はURIエンコードされている必要がある
        * `uri=Uri.encode(uri);`
        * テストで試すくらいなら半角英数字そのまま書いても問題ない

※`q=` は意味合い的には「場所の推定の為の情報」といったところで、地図の表示座標の提供自体は `geo:lat,lng` の部分が担っているはずだけど、事実上は上のように実装されている

###Googleマップでの動作例
Ver 9.76.0

|書式|動作|備考|
|---|---|---|
|geo:lat,lng|lat,lngの位置の地図を表示|ピンは立たない|
|geo:lat,lng?z=zoom|lat,lngの位置の地図をズームレベルzoomで表示|ピンは立たない|
|geo:0,0?q=lat,lng|lat,lngの位置にピンを立てて地図を表示|
|geo:0,0?q=lat,lng(label)|lat,lngの位置に名前付きのピンを立てて地図を表示|古いGoogleマップアプリ(～Ver6.x)では複数の候補地に同時にピンが立つ
|geo:lat,lng?q=lat,lng(label)&z=zoom|lat,lngの位置に名前付きのピンを立ててズームレベルzoomで地図を表示|ただしピンが立った時点で自動で既定のズームレベルに遷移する|
|geo:lat,lng?q=query|queryを元に座標周辺の複数プレイスを検索|複数ピンを立てて地図に表示。zoomをつけても無視|
|geo:0,0?q=query|queryを元に現在位置周辺の複数プレイスを検索|複数ピンを立てて地図に表示。zoomをつけても無視|
* `0,0` は省略しても動作する
* zoomは実数(=小数点を含む値)も受け付ける

##資料
* https://tools.ietf.org/html/rfc5870
    * RFC 5870で定められた公的なgeoURI仕様
        * ただしほとんどのアプリはこれではなくGoogleマップの仕様を基にして実装されている

* https://developer.android.com/guide/components/intents-common.html?hl=ja#Maps
* https://developers.google.com/maps/documentation/android-api/intents?hl=ja
    * Googleマップにおけるgeoインテント実装の仕様

* http://geouri.org/
    * なんか時間が止まっている感じで残念

#geoインテントを発行できるアプリ
どのアプリが発行機能を持つかは、明示されていない限り実際に操作してみなければわからない。
geoURIの内容は、インテント発行時にLogCatを睨んでいれば確認できる。
著者が確認したものは次の通り:

##OsmAnd
Ver 2.9.3

**フォーマット:** 

* `geo:lat,lng?z=zoom`

**発行方法:**

* 地点を選択→[共有]→[geo:]

**備考** 

* zoomは整数

##地図ロイド
Ver 15.21-VR

**フォーマット:** 

* `geo:0,0?q=lat,lng&z=zoom`

**発行方法:** 

* [この場所について]→[共有，印刷]→[マップを起動]

**備考:** 

* zoomは整数

##ロケスマ
Ver 3.4.4

**フォーマット**
* `geo:lat,lng?q=lat,lng`

**発行方法:** 

* ピンをタップ→ナビ起動ボタン→[その他のナビアプリ連携]

##UnwiredMaps
Ver 1.22

**フォーマット:** 

* `geo:lat,lng?z=zoom`

**発行方法:** 

* 位置メニューを実行

**備考:** 

* zoomは整数

##Map2Geo
Ver 3.12

**フォーマット:** 

* `geo:lat,lng?q=lat,lng(lable)&z=zoom` 
* `geo:lat,lng?q=lat,lng&z=zoom`
* `geo:lat,lng?z=zoom`
* `geo:lat,lng`

**発行方法:** 

* 地図アプリの共有から[他の地図へ転送]→geoインテントを受け付けるアプリを選択

**備考:** 

* zoomは整数または実数
* 送信先アプリに応じてgeoURIが変更される

#geoインテントを受け付けるアプリ
adb shell am start -d "geo:0.0" でインテントを発行して、反応するアプリ一覧を調べることができる。

著者が確認したものは次の通り:

##Googleマップ
Ver 9.76.0
 
[geoURIフォーマット](#geouriフォーマット)の項を参照のこと。

##Google Earth
Ver 9.2.10.2

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置の地図を目いっぱいのズームで表示|ピンは立たない|
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置の地図をズームレベルzoomで表示|ピンは立たない|
|geo:0,0?q=lat,lng                  |NG ||おそらく検索は行われているが検索ワードがlat,lng
|geo:0,0?q=lat,lng(label)           |NG ||おそらく検索は行われているが検索ワードがlat,lng(label)
|geo:lat,lng?q=lat,lng(label)&z=zoom|NG ||おそらく検索は行われているが検索ワードがlat,lng(label)
|geo:lat,lng?q=query                |OK |queryを元に表示位置付近の複数プレイスの検索→繰り返すと現在地付近の検索|複数のピンが立つ。座標は無視。zoomをつけても無視|
|geo:0,0?q=query                    |OK |queryを元に表示位置付近の複数プレイスの検索→繰り返すと現在地付近の検索|複数のピンが立つ。zoomをつけても無視|

##Waze
Ver 4.37.0.6

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |現在地からのルート検索開始|ピンが立つ|
|geo:lat,lng?z=zoom                 |OK |現在地からのルート検索開始|ピンが立つ。zoomは無視|
|geo:0,0?q=lat,lng                  |OK |現在地からのルート検索、または経由地追加|ピンが立つ|
|geo:0,0?q=lat,lng(label)           |OK |labelを元に現在地付近の場所の検索→ルート検索、または経由地追加|検索結果位置にピンが立つ。座標は無視|
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |現在地からのルート検索開始|ピンが立つ。labelは無視|
|geo:lat,lng?q=query                |OK |現在地からのルート検索開始|ピンが立つ。queryは無視|
|geo:0,0?q=query                    |OK |queryを元に現在地付近の場所の検索→ルート検索、または経由地追加|検索結果位置にピンが立つ|

##Y!マップ
Ver 6.12.0

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示
|geo:0,0?q=lat,lng                  |NG |
|geo:0,0?q=lat,lng(label)           |NG |
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lng,zoomに応じた範囲でlabelを元に複数プレイスを検索|複数のピンを立てて地図表示
|geo:lat,lng?q=query                |OK |lat,lng,デフォルトのzoomに応じた範囲でqueryを元に複数プレイスを検索|複数のピンを立てて地図表示
|geo:lat,lng?q=query&z=zoom         |OK |lat,lng,zoomに応じた範囲でqueryを元に複数プレイスを検索|複数のピンを立てて地図表示
|geo:0,0?q=query                    |NG |

* zoomは実数不可。小数点を含む場合無視される

##Y!カーナビ
Ver 2.5.2

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |NG |検索が実行されるが失敗する|
|geo:0,0?q=lat,lng(label)           |NG |検索が実行されるが失敗する|
|geo:lat,lng?q=lat,lng(label)&z=zoom|NG |検索が実行されるが失敗する|
|geo:lat,lng?q=query                |OK |現在の表示位置、ズームに応じた範囲でqueryを元に複数プレイスを検索|複数のピンを立てて地図表示。座標は無視。zoomをつけても無視
|geo:0,0?q=query                    |OK |現在の表示位置、ズームに応じた範囲でqueryを元に複数プレイスを検索|複数のピンを立てて地図表示。zoomをつけても無視

##NAVITIME
Ver 3.45.0

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にピンを立てて地図を表示,場所名にlabel適用|地点詳細表示が展開される
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立てて地図を表示,場所名にlabel適用|地点詳細表示が展開される,zoomは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置にピンを立てて地図を表示,場所名にquery適用|地点詳細表示が展開される
|geo:0,0?q=query                    |OK |queryでの検索結果一覧画面が表示される

##auナビウオーク
Ver8.39.5

* NAVITIMEと同じ動作

##NAVITIMEカーナビ
Ver 3.19.5

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置を選択状態で地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置を選択状態で地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置を選択状態で地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置を選択状態で地図を表示|labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置を選択状態で地図を表示|label,zoomは無視
|geo:lat,lng?q=query                |OK |queryでの検索結果一覧画面が表示される|lat,lngは無視,日本全域での検索が行われる
|geo:0,0?q=query                    |OK |queryでの検索結果一覧画面が表示される|日本全域での検索が行われる

##auカーナビ
Ver 3.18.1

* NAVITIMEカーナビと同じ動作

##NAVITIMEドライブサポーター
Ver 6.26.0

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にピンを立てて地図を表示|labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立てて地図を表示|label,zoomは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置にピンを立てて地図を表示|queryは無視
|geo:0,0?q=query                    |OK |queryでの検索結果一覧画面が表示される|エリア指定なしでの検索が行われる

##NAVITIMEトラックカーナビ
Ver 4.1.0

* NAVITIMEドライブサポーターと同じ動作

##au助手席ナビ
Ver 6.10.3

* NAVITIMEドライブサポーターと同じ動作
* 以前のバージョンではz=zoomがないとgeoURIを受け付けられなかった

##いつもNAVI
Ver 5.0.1

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示|地名に住所が充てられる
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|地名に住所が充てられる,zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示|地名が「ココ」になる
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にピンを立てて地図を表示|地名にlabelが充てられる
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立てて地図を表示|地名にlabelが充てられる,zoomは無視
|geo:lat,lng?q=query                |OK |lat,lngの周辺10km内をqueryで検索、結果に複数ピンを立ててトップの位置の地図を表示|zoomをつけても範囲不変
|geo:0,0?q=query                    |OK |最後にgeoインテントで指定された位置の周辺10kmをqueryで検索

##ドコモ地図アプリ
Ver 1500.01.2

* アプリ自体が起動できたためしがないので検証不能

##ナビロー
Ver v2.2.8.0

* サービス終了後に起動できなくなっており検証不能

##地図ロイド
Ver 15.21-VR

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示|地名に座標値が充てられる
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示|地名に座標値が充てられる
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示|地名に座標値が充てられる
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にピンを立てて地図を表示|地名にlabelが充てられる
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示|地名に座標値が充てられる,labelは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置にピンを立てて地図を表示|地名に座標値が充てられる,queryは無視,z=zoom付加も有効
|geo:0,0?q=query                    |OK |queryで地名を検索、結果位置に1本のピンを立てて地図を表示|地名は検索結果から充てられる,z=zoom付加も有効

* zoomが実数の場合は無視され、地図ロイドのデフォルト値が充てられる
* 仕様詳細:http://www.chizroid.info/chizroid_link

##UnwiredMaps
Ver 1.22

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置の地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置の地図をズームレベルzoomで表示
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置の地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置の地図を表示
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置の地図をズームレベルzoomで表示|labelは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置の地図を表示|queryは無視,z=zoom付加も有効
|geo:0,0?q=query                    |NG |

* ピンの概念はない
* コールドスタート時にはzoomが無視される

##Map2Geo
Ver 1.32

* 受け取ったgeoURIの座標、ズームレベル、ラベルを他のアプリに適したフォーマットのインテントに変換して転送する

##Geo2QR
Ver 1.00

* 受け取ったgeoURIをそのままQRコードにして表示する
* geoURIの妥当性については検証されない

##Geo2Clip
Ver 1.00

* 受け取ったgeoURIの座標部分をlat,lngの文字列にしてクリップボードにコピーする
* geo:に続く座標とq=に続く座標が存在する場合、q=の方が優先される

##Yandex.Maps
Ver 7.4

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示
|geo:0,0?q=lat,lng                  |NG |
|geo:0,0?q=lat,lng(label)           |NG |
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示|labelは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置にピンを立てて地図を表示|queryは無視,z=zoom付加も有効
|geo:0,0?q=query                    |OK |表示中の地図範囲をqueryで検索、結果一覧をリスト表示|z=zoom付加は無視

* `0,0`の省略不可

##百度地図
Ver 10.6.5

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にlabelを名前とするピンを立てて地図を表示
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にlabelを名前とするピンを立てて地図を表示|zoomは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置にqueryを名前とするピンを立てて地図を表示
|geo:0,0?q=query                    |OK |表示中の地図範囲周辺をqueryで検索、結果一覧をリスト表示|z=zoom付加は検索ワードに追記されるので不可

* `0,0`の省略不可。省略すると現在地の地図が表示される、または表示位置変化なし

##MAPS.ME
Ver 8.1.3－Google

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK?|lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK?|lat,lngの位置にピンを立ててズームレベルzoomで地図を表示
|geo:0,0?q=lat,lng                  |OK?|lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK?|lat,lngの位置にピンを立てて地図を表示|labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK?|lat,lngの位置にピンを立ててズームレベルzoomで地図を表示|labelは無視
|geo:lat,lng?q=query                |OK?|lat,lngの位置にピンを立てて地図を表示|queryは無視,z=zoom付加も有効
|geo:0,0?q=query                    |NG |

* 同じ場所を繰り返し指定するとピンの状態がトグルする。実用上問題あり
* zoom指定がない場合はデフォルトのズームレベルが適用される

##OsmAnd
Ver 2.9.3

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にlabelを名前とするピンを立てて地図を表示
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立てて地図を表示|label,zoomは無視,zoomなしならlabel有効
|geo:lat,lng?q=query                |OK |lat,lngの位置にピンを立てて地図を表示|queryは無視
|geo:0,0?q=query                    |OK |検索画面でqueryを検索

* zoomは実数不可。位置検索に失敗する
* q=...の後に別パラメータがあるとラベルを認識しない

##Magic Earth
Ver 7.1.18.12.FEFB4315.8FB29E8D

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置にピンを立てて地図を表示|labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置にピンを立ててズームレベルzoomで地図を表示|labelは無視
|geo:lat,lng?q=query                |OK |地図表示位置近傍をqueryで検索してピン１つを立てて地図を表示|lat,lngは無視
|geo:0,0?q=query                    |OK |地図表示位置近傍をqueryで検索してピン１つを立てて地図を表示

##Sygic
Ver 17.3.23

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK?|lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK?|lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |NG |
|geo:0,0?q=lat,lng(label)           |NG |
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK?|lat,lngの位置にピンを立てて地図を表示|zoom,labelは無視
|geo:lat,lng?q=query                |OK?|lat,lngの位置にピンを立てて地図を表示|queryは無視
|geo:0,0?q=query                    |NG |

* 同じ場所を繰り返し指定するとピンの状態がトグルする。実用上問題あり

##mapstr
Ver 1.6.12

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない
|geo:lat,lng?z=zoom                 |NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない
|geo:0,0?q=lat,lng                  |NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない
|geo:0,0?q=lat,lng(label)           |NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない,labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない,labelは無視
|geo:lat,lng?q=query                |NG |lat,lngの位置のブックマーク画面表示|コールドスタートでしか機能しない,queryは無視
|geo:0,0?q=query                    |NG |

##Uber
Ver 4.206.10002

* アプリが起動するだけで何のアクションも生じない

##Neshan
Ver 4.7.2

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |NG |
|geo:0,0?q=lat,lng                  |NG |
|geo:0,0?q=lat,lng(label)           |NG |
|geo:lat,lng?q=lat,lng(label)&z=zoom|NG |
|geo:lat,lng?q=query                |NG |
|geo:0,0?q=query                    |NG |

#geoインテント変種を受け付けるアプリ
##地図マピオン
Ver 4.12.3

* 以前のバージョンではlatとlngの並び順が他の多くのアプリに対して逆となっていた
    * そのため現在のバージョンでも日本国内の範囲ではlat,lngが逆でも動作する
    * 古いバージョンの地図マピオンに対してgeoインテントを送るのであれば、lat,lngを逆にする必要がある

|書式|処理|動作|備考|
|---|---|---|---|
|geo:lat,lng                        |OK |lat,lngの位置にピンを立てて地図を表示
|geo:lat,lng?z=zoom                 |OK |lat,lngの位置にピンを立てて地図を表示|zoomは無視
|geo:0,0?q=lat,lng                  |OK |lat,lngの位置にピンを立てて地図を表示
|geo:0,0?q=lat,lng(label)           |OK |lat,lngの位置をピンを立てて地図を表示|labelは無視
|geo:lat,lng?q=lat,lng(label)&z=zoom|OK |lat,lngの位置をピンを立てて地図を表示|label,zoomは無視
|geo:lat,lng?q=query                |OK |lat,lngの位置をピンを立てて地図を表示|queryは無視
|geo:0,0?q=query                    |NG |

* zoomは無視され、常に既定の値が適用される
* `geo:0,0` を使用した場合、以前のバージョンではピンは立っても地図は移動しなかった

##Neshan

2018年7月時点で以下の仕様は正しく動作しなくなっており、通常のgeoインテントを受け付けるようになっています。

* 以下のURIで動作している(ただしzoom,labelは無視される):
    * geo://lat,lng
    * geo://lat,lng?q=lat,lng(label)
    * geo://lat,lng?q=lat,lng(label)&z=zoom
    * geo://lat,lng?z=zoom
* 暗黙的インテントでは受け付けていない
    * 明示的に次の対象にインテントを送る必要がある:
        * package=org.rajman.neshan.traffic.tehran.navigator
        * class=org.rajman.neshan.ui.activity.MainActivity
* geo://... の書式である必要がある

#更新履歴
* 2018.4.23 脱稿
* 2018.4.21 着手