In this article, I'll show you some sample code which store geopoint data by just clicking on Google Map. Before we go, perhaps you can read the djangoforms documentation. This will help you to understand the codes in this article.
Please create a directory for this article, copy my_geopt.py to the directory and create 3 brand new files app.yaml, main.py, and index.html. That's all.
After creating these files, start local dev server, get access to localhost, and see that you can specify a particular GeoPt by just clicking on the Google Map.
And here is a live demo(slightly more complicated, but basically almost the same).
Happy coding :-)
app.yaml
application: geotest version: 1 runtime: python api_version: 1 handlers: - url: /.* script: main.py
main.py
from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app import os import wsgiref.handlers from google.appengine.ext import db from google.appengine.ext.webapp import template from google.appengine.ext.db import djangoforms import my_geopt class Place(db.Model): name = db.StringProperty() description = db.StringProperty() geopoint = db.GeoPtProperty() date = db.DateTimeProperty(auto_now=True) class PlaceForm(djangoforms.ModelForm): class Meta: model = Place class MainPage(webapp.RequestHandler): def post(self): data = PlaceForm(data=self.request.POST) if data.is_valid(): # Save the data, and redirect to the view page entity = data.save(commit=False) entity.put() self.redirect('/') else: # Reprint the form contents = {'form': data} path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, contents)) def get(self): contents = {'form': PlaceForm()} path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, contents)) application = webapp.WSGIApplication( [('/', MainPage),], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
index.html (Please replace 2 YOURAPIKEYs with your Maps API Key)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>GeoPtWidgets Example</title> <script src="http://maps.google.com/maps?file=api&v=2&key=YOURAPIKEY" type="text/javascript"></script> <script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=YOURAPIKEY" type="text/javascript"></script> <script src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js" type="text/javascript"></script> <style type="text/css"> @import url("http://www.google.com/uds/css/gsearch.css"); @import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css"); </style> </head> <body onunload="GUnload()"> <h1>GeoPtWidgets Example</h1> <form method="post" action="/"> {{ form.as_p }} <input type="submit" value="register"/> </form> </body> </html>
1 comment:
very good work. Thanks. Thomas Richter
Post a Comment