Google地图地理定位和Zope3的z3c.form小部件
项目描述
本软件包提供了一个基于m01.mongo和z3c.form的Google地图小部件,用于Zope3。
README
本软件包提供了一个基于z3c.form的Google地图小部件概念。有关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地图(GMapWidget)小部件允许您在输入模式下显示特定纬度和经度的地理位置的地图。在显示模式下,它提供了一个显示指定位置的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、useResizerTrigger和responsive在javascript中可用。
0.7.0 (2013-11-23)
特性:支持来自m01.mongo版本0.11.0的新GeoPoint实现,包括新的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)
初始发布
项目详情
m01.gmap-0.8.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 78df641574ba1a4395d9aa4ec827c2ff49b53851d5b2f89923a968c179a0e237 |
|
MD5 | b447d280d768615b30528a30a5ce2b8b |
|
BLAKE2b-256 | 4437f61f15f349eeb3bce2a3c546ba1101c320958b05989c5f514e7b581b1360 |