Take Your Time

仕事や研究、コンピューターとの付き合い方

新しいggmapの使い方

Rのggmapには2種類ある。

Rstudioでインストールすると入ってくるCRANのggmapとdkahle氏の新しいggmapだ。googleのstatic maps APIが仕様変更*1をしていることもあり、google mapsをバックエンドに使うのであればdkahle氏版の方を使うのが必須である。installはdevtoolsで行う(githubを参照)。

 

github.com

 

さて、Maps Static APIは、非常に細かく地図のスタイルを指定できる。そのため、https://snazzymaps.comにみるように多様なデザインの地図を作成可能である。

直接JavaScriptなり、WEB APIを使って地図を呼び出すときは難儀しないが、これをRのggmapから呼び出すのにはコツがいる。

 

まず、複数のスタイルを指定する場合だが、普通にAPIを叩くときは"style=feature:all|color|black&style=feature:road|element:geometry|visibility:off"と書けばいいが、get_googlemapでstyle = c(feature = "all", color = "black", feature = "road", element = "geometry", visibility = "off")としても、読み込まれない。また、style = c("feature:all|color:black", "feature:road|element:geometry|visibility:off")のように文字列を入れても最後のものしか反応しない。

かなりハックだがSOFに回答がかいてあった。

stackoverflow.com

 つまり、style = list(c(feature = "all", color = "black"), c("&style", feature = "road", element = "geometry", visibility = "off"))のように"&style"を組み込んでやる必要があるのだ。この記事はGitHubでも引用されている。

 

色の指定方法も単純にはいかない。#はエラーになるので"0x"に置き換える必要がある。例えば、color = "#2E2EFE"はcolor = "0x2E2EFE"だ。

 

同様に、Google Mapのあの涙マークの反対のようなマーク(=Marker)も複数指定するためにはコツがいる。

マーカーがひとつであれば、

```R

markers = "color:red|35.0,135.0"

```

のようにかけばよいが、2つ目以降は"&marker="が必要である。

 

簡単な実装で直りそうなのですぐに対処できそうだが、今の所ややawkwardなものになっている。

 

これらに気をつければ基本的になんでもできる。

 

 

*1:マップの呼び出しにAPI keyの登録が必須になった