地名と共に画像をアップすると、マップ上にコメント付きで画像を配置できるGoogle App Engineアプリを試してみました。
Google App Engine と Maps で作ったWebアプリのソースを公開されている方がいました。面白そうなソースなので、設置をして試してみました。このような動くサンプルを見せていただけると、とても良くGoogle App Engineの構造が分かります。感謝!
自分のアカウントでアップしてみました。Pythonの部分は1点のみ修正をしています。見栄えについては変更しました。
My Photo in Google Maps on GAE
http://vivo-map.appspot.com/maps
Pythonのソースの修正した部分について。ローカルで動作テストをすると、ジオコーディングは正常に動作するのですが、サーバ上に上げると、緯度経度の取得が出来ない現象がありました。サーバ上で何が起きているのかをステータスコードで確認をすると、「google.maps.GeocoderStatus.OVER_QUERY_LIMIT」というステータスを取得していることが分かりました。これは、「使用制限回数の上限を超えたことを示している」そうです。ローカルからのリクエストは問題なく、サーバからのリクエストで問題が起きるのが、よく分かりません。
ジオコーディングをしている下記の部分を変更してみました。
class PostPage(webapp.RequestHandler): def getGeometory(self, place): url = u"http://maps.google.com/maps/api/geocode/xml?address=%s&sensor=false" % urllib.quote(place.encode('utf8')) result = urlfetch.fetch(url) lat = 35.6895060 # 東京 lng = 139.6917010 # 東京 if result.status_code == 200: doc = xml.dom.minidom.parseString(result.content) if doc.getElementsByTagName('status').item(0).childNodes[0].data == "OK": lat = doc.getElementsByTagName('lat').item(0).childNodes[0].data lng = doc.getElementsByTagName('lng').item(0).childNodes[0].data return db.GeoPt(lat, lng)
Pythonのgooglemapsモジュールを使った検索にしてみました。内部では同じことをしているのだから、ダメかと思いましたが、サーバ上でも動作をしました。
# モジュールを追加 from googlemaps import GoogleMaps class PostPage(webapp.RequestHandler): def getGeometory(self, place): gmaps = GoogleMaps() address = place.encode('utf8') lat, lng = gmaps.address_to_latlng(address) return db.GeoPt(lat, lng)
でたらめな場所(地名/駅名/〒)の情報でも、何かしらの場所の緯度経度に変換をして地図にポイントをします。
下記の記事のソースを使わせていただきました。
Google App Engine と Maps でWebアプリ作ってみた
http://sakitake4.blogspot.com/2011/04/google-app-engine-maps-web.html?spref=tw
ありがとうございました。
0 件のコメント:
コメントを投稿