跳转到主要内容

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&amp;v=2&amp;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&amp;v=2&amp;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&amp;v=2&amp;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&amp;v=2&amp;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&amp;v=2&amp;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&amp;v=2&amp;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 (53.4 kB 查看哈希值)

上传时间 源代码

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面