GeoJsonデータをGoogle Mapにレンダリングする
コンテンツ
- GeoJsonを有効利用したいけど解決策はあるか?
- インストール
- 具体的な使用イメージ
- 色を変える
1. GeoJsonを有効利用したいけど解決策はあるか?
GeoDjangoを使う場合にgeometry型のデータをGeoJsonとして出力できる。
以下のように簡単に。。。
from django.core.serializers import serialize #前提としてDRFを利用する cityObjects = City.objects.filter(id=3) geojson = serialize('geojson', cityObjects) return Response({"geojson": geojson})
問題はそのGeoJsonデータをAndroidが受け取ってデータをレンダリングできるかってことだ。
せっかくgeojsonとして送信しているのに中身を解析してマップにレンダリングするのでは寂しい。
GoogleMapsPlatformにはその解決がある。GeoJsonLayerクラスを利用することだ。
val layer = GeoJsonLayer(googleMap, geoJsonData);
layer.addLayerToMap()
上記を使えばgeodjangoが生成したgeojsonをAndroid側でそのままマッピングすることができる。
2. インストール
googlemapsplatformを使う場合にgradleにモジュールをインストールしたと思うが、そのモジュールではGeoJsonLayerクラスを利用することができない。
gradleに以下を追加する。
dependencies { implementation 'com.google.maps.android:android-maps-utils:1.0.2' }
GeoJsonLayerクラスを使うためのモジュールインストール方法を示す資料
Maps SDK for Android Utility Setup | Google Developers
3. 具体的な使用イメージ
- まずdjangoがjsonをAndroid端末に送信する。
- Androidがデータを受け取る
- GoogleMapsPlatformのマップをフラグメントとして起動する。
- geojsonをonMapReadyメソッド内で使いレンダリングする。
4. 色を変える
val depLayer = GeoJsonLayer(googleMap, geoJsonData);
depLayer.defaultPolygonStyle.fillColor = Color.GREEN
depLayer.addLayerToMap()
Maps SDK for Android Utility Setup | Google Developers
Render a GeoJson layer with Google Maps, OSM or Mapbox on Android
Google Maps Android GeoJSON Utility | Maps SDK for Android