用于zope3的google map geo location和z3c.form小部件
m01.gmap的Python项目详细描述
这个包为zope3提供了一个基于m01.mongo和z3c.form的google地图小部件。
自述文件
这个包为google maps提供了一个z3c.form小部件概念。了解更多信息 关于google地图,请参见:http://code.google.com/apis/maps/
>>> import os >>> import zope.component >>> from zope.pagetemplate.interfaces import IPageTemplate >>> from zope.interface.verify import verifyClass >>> from z3c.form.interfaces import IWidget >>> from z3c.form.interfaces import INPUT_MODE >>> from z3c.form.testing import TestRequest >>> from z3c.form.widget import WidgetTemplateFactory >>> import m01.gmap >>> import m01.gmap.util >>> import m01.gmap.browser >>> from m01.gmap import interfaces >>> from m01.gmap.widget import GMapWidget >>> from m01.gmap.widget import GeoPointGMapWidget
gmapwidget
google map(GMapWidget)小部件允许您显示select latitude的地图 输入模式下地理位置的经度。在显示模式下,它提供 显示给定位置的gmap。
对于所有小部件,gmap小部件必须提供IWidget 接口:
>>> verifyClass(IWidget, GMapWidget) True
只能使用请求来实例化小部件:
>>> request = TestRequest() >>> widget = GMapWidget(request)
在呈现小部件之前,必须设置小部件的名称和id:
>>> widget.id = 'widget.id' >>> widget.name = 'widget.name'
我们还需要注册小部件的模板:
>>> def getPath(filename): ... return os.path.join(os.path.dirname(m01.gmap.__file__), ... filename)>>> zope.component.provideAdapter( ... WidgetTemplateFactory(getPath('widget_input.pt'), 'text/html'), ... (None, None, None, None, interfaces.IGMapWidget), ... IPageTemplate, name=INPUT_MODE)
如果我们呈现小部件,我们会得到一个简单的输入元素:
>>> print(widget.render()) <input type="hidden" id="widget.id-latitude" name="widget.name-latitude" class="hidden-widget" value="" /> <input type="hidden" id="widget.id-longitude" name="widget.name-longitude" class="hidden-widget" value="" /> <div id="widget.id" style="width: 400px; height: 300px"></div> <script type="text/javascript"> $("#widget\\.id").m01GMapWidget({ iconWidth: 19, infoWindowAnchorYOffset: 0, iconHeight: 32, responsive: true, iconURL: "http://127.0.0.1/@@/m01GMapWidgetIcon.png", iconAnchorXOffset: 9, zoomFallback: 4, zoom: 11, longitude: null, longitudeFallback: 10, latitudeFallback: 10, latitudeExpression: "#widget\\.id-latitude", mode: "input", infoWindowContent: "Drag and drop the marker and save the form. <br />Double click the marker for remove them.", address: "", latitude: null, iconAnchorYOffset: 30, longitudeExpression: "#widget\\.id-longitude", iconShadowURL: "http://127.0.0.1/@@/m01GMapWidgetIconShadow.png", infoWindowAnchorXOffset: 10 }); </script> <BLANKLINE>
我们还需要包含IGMapAPIProvider,它知道如何生成 gamp api javascipt。它自己的api密钥可以通过产品配置来定义 或者是环境设置。有关详细信息,请参阅buildout.cfg和util.py:
>>> m01.gmap.util.GMAP_API_KEY u'ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw'
我们提供http或https javascript链接:
>>> print(m01.gmap.util.GMAP_JAVASCRIPT) <script type="text/javascript" src="//maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>>>> print(m01.gmap.util.GMAP_HTTPS_JAVASCRIPT) <script type="text/javascript" src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>
您的内容提供商可以用来呈现完整的javascript:
>>> provider = m01.gmap.browser.GMapAPIProvider(None, None, None) >>> print(provider.render()) <script type="text/javascript" src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>
geopointgmapwidget
GeoPointGMapWidget小部件提供与GMapWidget相同的功能,但使用 另一个转换器并支持m01.mongo geopoint实现。
对于所有小部件,gmap小部件必须提供IWidget 接口:
>>> verifyClass(IWidget, GeoPointGMapWidget) True
只能使用请求来实例化小部件:
>>> request = TestRequest() >>> widget = GeoPointGMapWidget(request)
在呈现小部件之前,必须设置小部件的名称和id:
>>> widget.id = 'widget.id' >>> widget.name = 'widget.name'
我们还需要注册小部件的模板:
>>> def getPath(filename): ... return os.path.join(os.path.dirname(m01.gmap.__file__), ... filename)>>> zope.component.provideAdapter( ... WidgetTemplateFactory(getPath('widget_input.pt'), 'text/html'), ... (None, None, None, None, interfaces.IGeoPointGMapWidget), ... IPageTemplate, name=INPUT_MODE)
如果我们呈现小部件,我们会得到一个简单的输入元素:
>>> print(widget.render()) <input type="hidden" id="widget.id-latitude" name="widget.name-latitude" class="hidden-widget" value="" /> <input type="hidden" id="widget.id-longitude" name="widget.name-longitude" class="hidden-widget" value="" /> <div id="widget.id" style="width: 400px; height: 300px"></div> <script type="text/javascript"> $("#widget\\.id").m01GMapWidget({ iconWidth: 19, infoWindowAnchorYOffset: 0, iconHeight: 32, responsive: true, iconURL: "http://127.0.0.1/@@/m01GMapWidgetIcon.png", iconAnchorXOffset: 9, zoomFallback: 4, zoom: 11, longitude: null, longitudeFallback: 10, latitudeFallback: 10, latitudeExpression: "#widget\\.id-latitude", mode: "input", infoWindowContent: "Drag and drop the marker and save the form. <br />Double click the marker for remove them.", address: "", latitude: null, iconAnchorYOffset: 30, longitudeExpression: "#widget\\.id-longitude", iconShadowURL: "http://127.0.0.1/@@/m01GMapWidgetIconShadow.png", infoWindowAnchorXOffset: 10 }); </script> <BLANKLINE>
我们还需要包含igmapapiprovider,它知道如何生成 gamp api javascipt。它自己的api密钥可以通过产品配置来定义 或者是环境设置。有关更多信息,请参见buildout.cfg和util.py:
>>> m01.gmap.util.GMAP_API_KEY u'ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw'
我们提供http或https javascript链接:
>>> print(m01.gmap.util.GMAP_JAVASCRIPT) <script type="text/javascript" src="//maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>>>> print(m01.gmap.util.GMAP_HTTPS_JAVASCRIPT) <script type="text/javascript" src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>
您的内容提供商可以用来呈现完整的javascript:
>>> provider = m01.gmap.browser.GMapAPIProvider(None, None, None) >>> print(provider.render()) <script type="text/javascript" src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAFAsu6H_TCNEapjedv-QILxTwM0brOpm-All5BF6PoaKBxRWWERQwU76rKRQO6OVZmsjxrqya2hcEBw"> </script>
更改
0.8.1(2018-07-23)
- 已从javascript中删除console.log调用
0.8.0(2018-04-24)
- 功能:支持响应选项和大小调整渲染gmap。新的 选项useresizer、useresizerrigter和responsive在中提供 javascript。
0.7.0(2013-11-23)
- 特点:支持M01.mongo版本提供的新的geopoint实现 0.11.0采用新的geopointgmapwidget和z3c.form转换器实现
- 删除了google maps api v2 javascript
0.6.1(2013-06-28)
- 错误修复:在gmaps v3 api javascript中修复lat、lng设置
0.6.0(2013-01-04)
- 更新至google maps api v3
0.5.0(2012-11-18)
- 初始版本