こんにちは、ヒガシです。
最近、GoogleMapAPIを使って遊んでいます。
ということで今回はGoogleMapAPIを使って以下の画像のように指定した複数地点にマーカーを表示した地図画像を取得するということをやっていこうと思います。
複数地点の緯度、経度を取得しておく
地図上にマーカーを表示するには、それぞれの地点の緯度、経度を指定する必要があります。
ということでまずはそれらを指定しておきます。
今回は冒頭に紹介した通り、大阪駅、名古屋駅、東京駅の3地点を指定してみます。
latlng_list=[[34.7025912174535, 135.49590768076592],#大阪駅
[35.17110791586614, 136.88156908263508],#名古屋駅
[35.6814653775503, 139.76717672683552]] #東京駅
もちろん、3地点以上を指定しても問題ありません。
複数マーカーの地図画像をGoogleMapAPIから取得する方法
それでは先ほど指定した情報を使って地図画像を作成するプログラムをご紹介します。
def get_image(latlng_list, image_name):
# パラメータの設定
api_key = "YOUR API KEY"
gmaps = googlemaps.Client(key=api_key)
#航空写真の取得
pixel = '640x640'
scale = ''
latlng_array = np.array(latlng_list)
lat_center = (max(latlng_array[:,0]) + min(latlng_array[:,0])) / 2
lng_center = (max(latlng_array[:,1]) + min(latlng_array[:,1])) / 2
center =str(lat_center) + "," + str(lng_center)
marker_pos = ''
for i in range(len(latlng_array)):
marker_pos = marker_pos + str(latlng_array[i,0]) + "," + str(latlng_array[i,1])
if i != len(latlng_array)-1:
marker_pos = marker_pos + '&markers='
url = 'https://maps.googleapis.com/maps/api/staticmap?center='
maptype = '&maptype=hybrid'
size = '&size='
sensor = '&sensor=false'
zoom = '&zoom='
marker = '&markers='
key = '&key='
# url
url = url + center + maptype + size + pixel + sensor + zoom + scale + marker + marker_pos + key + api_key
#画像出力
data = urllib.request.urlopen(url).read()
with open(image_name+'.png', mode="wb") as f:
f.write(data)
あとはこの関数に先ほど指定した緯度、経度のリストと、保存後の地図画像の名前を渡してあげるだけでOKです。
実行すると実行フォルダに画像が作成されているはずです。
※APIキーはご自身のものを設定してください。
4地点に変更して実行してみる
latlng_list=[[34.7025912174535, 135.49590768076592],#大阪駅
[35.17110791586614, 136.88156908263508],#名古屋駅
[35.6814653775503, 139.76717672683552],#東京駅
[38.26033854491558, 140.88247231928793]]#仙台駅
get_image(latlng_list, 'test1')
次はこんな感じで実行してみましょう。
問題なく地点が増えていますね。
おわりに
というわけで今回はGoogleMapAPIを使って複数地点にマーカーを打った地図画像を取得する方法をご紹介しました。
アプリ作成の際などにぜひご活用ください。
それではまた!
コメント