makina corpus为collective.geo(使用c.g/mapwidget和c.g.openlayers)映射内容类型

collective.geo.mapcontent的Python项目详细描述


Introduction

这是OpenLayers和collective.geo.mapWidget的一个非常小的轻量级集成。 想法是有一个地图内容类型来创建完整的可定制地图与集体。地理灵活性。 最后一个目标是在一个内容类型上存储一些javascript模板来初始化映射。

因为它需要用OpenLead和jQuery编写一些JavaScript,它不是一个“终端用户”的解决方案,而是一个方便灵活的方法来集成PLONE中的OpenLead。

Installation

只要简单的安装collective.geo.geopoint就足够了。 或者,构建用户可以安装collective.geo.geopoint作为特定项目构建的一部分,方法是使用如下构建配置:

[buildout]
...
eggs =
    collective.geo.mapcontent
...
[instance]
...
zcml =
    collective.geo.mapcontent

How to use

在plone接口中,只需添加一个映射。 您的MAPID是:mapcontent。 然后,在内容类型“javascript”文本区域中填充一些javascript,以使用mapWidget显示地图:

- set the box width and height
- set the long/lat/zoom settings
- set the layers

例如:

jq('#mapcontent').css('height', '1024px');
jq('#mapcontent').css('width', '1024px');
var coords = {lon: 0.000000, lat: 0.000000, zoom: 10};
cgmap.state = {'default': coords, 'mapcontent': coords};
cgmap.extendconfig(
  {layers: [function() {
  return new OpenLayers.Layer.WMS("OpenLayers WMS",
                                  "http://vmap0.tiles.osgeo.org/wms/vmap0",
                                  {layers: 'basic'});}
           ]
  }, 'mapcontent');

MapWidget将使用这些设置为您初始化地图。 而且,请记住,您正在使用mapwidget。 这个包住了openlayers,下面是一些有用的提示:

  • cgmap.config[‘mapcontent’].map:
    the current OpenLayers map instance
  • cgmap.config[‘mapcontent’].layers:
    the list of function callbacks returning a layer
  • cgmap.state[‘mapcontent’]:
    the current long/lat/zoom settings (js mapping).

如果以后需要控制映射,只需在文档准备好时注册一些内容。 例如:

// add this in the /edit js textarea
jq(document).ready(function() {
    cgmap['config']['mapcontent'].map.DOSOMETHING();
});

Tests

作为一个医生,我们可以在这里讲一个故事。

首先,我们必须进行一些设置。我们使用随附的testbrowser 因为这提供了正确的zope 2集成。大部分 不过,文档在底层的zope.testbrower包中。

>>> from Products.Five.testbrowser import Browser
>>> browser = Browser()
>>> portal_url = self.portal.absolute_url()

在编写和调试testbrowser测试时,以下内容非常有用。它让 我们在错误日志中看到所有错误消息。

>>> self.portal.error_log._ignored_exceptions = ()

有了它,我们可以转到门户网站首页并登录。我们将 使用plonetestcase的默认用户执行此操作:

>>> from Products.PloneTestCase.setup import portal_owner, default_password

由于附加主题或产品可能会删除或隐藏登录portlet,因此此测试将使用plone附带的登录表单。

>>> browser.open(portal_url + '/login_form')
>>> browser.getControl(name='__ac_name').value = portal_owner
>>> browser.getControl(name='__ac_password').value = default_password
>>> browser.getControl(name='submit').click()

在这里,我们设置登录表单上字段的值,然后模拟 提交点击。然后确保收到友好的登录消息:

>>> "You are now logged in" in browser.contents
True

最后,在继续之前,让我们返回到网站的首页

>>> browser.open(portal_url)

The Map Content content type

在本节中,我们将通过执行 添加、更新和删除地图内容内容等基本操作 项目。

Adding a new Map Content content item

我们使用“添加新内容”菜单添加新内容项。

>>> browser.getLink('Add new').click()
>>> browser.getControl('Map Content').click()
>>> browser.getControl(name='form.button.Add').click()
>>> browser.getControl(name='title').value = 'Map Content Sample'
>>> js = """
... jq('#mapcontent').css('height', '1024px');
... jq('#mapcontent').css('width', '1024px');
... var coords = {lon: 0.000000, lat: 0.000000, zoom: 10};
... cgmap.state = {'default': coords, 'mapcontent': coords};
... cgmap.extendconfig(
...   {layers: [function() {
...                  return new OpenLayers.Layer.WMS("OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'});}
...            ]
...   },
...   'mapcontent');
... """
>>> browser.getControl(name='_js').value = js
>>> browser.getControl('Save').click()
>>> 'Changes saved' in browser.contents
True

Rendering

我们完了!我们向门户添加了一个新的“地图内容”内容项,在视图模式下,它将使用mapWidget宏进行渲染

>>> '<script type="text/javascript">'+js in browser.contents
True

Changelog

0.1(2010-11-10)

  • 初始版本[Kiorky]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
插件Java Bukkit/spiget块指定的命令   通过索引Java在数组中查找异或   java程序无法识别字符在数组中的位置   unix无法启动测试系统“slim”:java。木卫一。IOException:无法运行程序“java”:错误=2,没有这样的文件或目录   java使用txt文件值创建对象数组   JAVAutil。扫描器如何在用户在JAVA程序上创建后为每个学生提供一个唯一的ID   java从选定的单元格列表项获取信息   小程序Java JFileChooser网络目录用户/密码提示   java如何格式化字符串以显示两位小数   keylistener使用java使用箭头键移动图形   java无法从HttpClient调用接收数据   java API中的条件字符串解析器?   正则表达式如何在java中将字符串拆分为单词来保留标点符号?   java使用多个jython PythonInterpreter对象和不同的PythonPath   java如何克服方法调用线程。sleep()在findbugs中带有锁定警告?   java Spring工具套件和Spring配置器目录结构   使用setterjava实现jTextField的swing验证输入