From: Jean-Michel F. <svn...@pl...> - 2008-05-27 21:13:07
|
Author: toutpt Date: Tue May 27 21:13:02 2008 New Revision: 65780 Added: epwithgis.openlayers/ epwithgis.openlayers/branches/ epwithgis.openlayers/tags/ epwithgis.openlayers/trunk/ epwithgis.openlayers/trunk/README.txt (contents, props changed) epwithgis.openlayers/trunk/docs/ epwithgis.openlayers/trunk/docs/HISTORY.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/ epwithgis.openlayers/trunk/epwithgis/__init__.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/ epwithgis.openlayers/trunk/epwithgis/openlayers/README.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/__init__.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/browser.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/config.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/configure.zcml (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/docs/ epwithgis.openlayers/trunk/epwithgis/openlayers/docs/HISTORY.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/docs/README.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/docs/TODO.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/doctests/ epwithgis.openlayers/trunk/epwithgis/openlayers/doctests/README.txt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/interfaces.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/cssregistry.xml epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/jsregistry.xml epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/properties.xml epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/propertiestool.xml epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/skins.xml epwithgis.openlayers/trunk/epwithgis/openlayers/skins/ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_add_point_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_add_point_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_adegr_popup_background.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_blank.gif (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_close.gif (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_drag-rectangle-off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_drag-rectangle-on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_line_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_point_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_point_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_polygon_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_polygon_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_east-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_line.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_line_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_point.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_point_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_polygon.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_polygon_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_erase.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_erase_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_geocode.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_infoPolygon.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_line.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_line_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_polygon.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_polygon_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_validate.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_layer-switcher-maximize.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_layer-switcher-minimize.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-blue.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-gold.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-green.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_measuring-stick-off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_measuring-stick-on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_move_feature_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_move_feature_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_north-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_openlayer_draw_line_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_pan_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_pan_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_panning-hand-off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_panning-hand-on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_remove_point_off.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_remove_point_on.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_slider.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_south-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_spot_image.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_west-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-minus-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-plus-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-world-mini.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoombar.png (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/Base.js (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/ManageOL.js (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/OpenLayers.js (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/Utils.js (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/templates/ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/templates/openlayers_example.pt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/templates/openlayers_macros.pt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/skins/templates/openlayers_toolbar_buttons.pt (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/ epwithgis.openlayers/trunk/epwithgis/openlayers/tests/__init__.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/base.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/test_browser.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/test_openlayersdocs.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/test_openlayersdocstrings.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/test_setup.py (contents, props changed) epwithgis.openlayers/trunk/epwithgis/openlayers/tests/utils.py (contents, props changed) epwithgis.openlayers/trunk/setup.cfg epwithgis.openlayers/trunk/setup.py (contents, props changed) Log: initial import of epwithgis.openlayers Added: epwithgis.openlayers/trunk/README.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/README.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,4 @@ +Introduction +============ + + Added: epwithgis.openlayers/trunk/docs/HISTORY.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/docs/HISTORY.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,8 @@ +Changelog +========= + +0.1 - Unreleased +---------------- + +* Initial release + Added: epwithgis.openlayers/trunk/epwithgis/__init__.py ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/__init__.py Tue May 27 21:13:02 2008 @@ -0,0 +1,6 @@ +# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages +try: + __import__('pkg_resources').declare_namespace(__name__) +except ImportError: + from pkgutil import extend_path + __path__ = extend_path(__path__, __name__) Added: epwithgis.openlayers/trunk/epwithgis/openlayers/README.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/README.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,2 @@ +see docs/README.txt + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/__init__.py ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/__init__.py Tue May 27 21:13:02 2008 @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2008 JeanMichel FRANCOIS aka ToutPT + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +"""openlayers initialization""" +import config +import os + +import logging +LOG = logging.getLogger(config.PROJECTNAME) + +#Registering the skins' Folders +from Products.CMFCore import DirectoryView +DirectoryView.registerDirectory('skins/templates',config.GLOBALS) +DirectoryView.registerDirectory('skins/images',config.GLOBALS) +DirectoryView.registerDirectory('skins/javascripts',config.GLOBALS) + +if os.path.isfile(os.path.join(__path__[0], 'debug.txt')): + class DebugFilter(logging.Filter): + def filter(self, record): + if record.levelno == logging.DEBUG: + # raise level to allow going through zope logger + record.levelno = 49 + return True + LOG.addFilter(DebugFilter(config.PROJECTNAME)) + LOG.setLevel(logging.DEBUG) + +LOG.info("Logging level set to %s", + logging.getLevelName(LOG.getEffectiveLevel())) + +from zope.i18nmessageid import MessageFactory +OpenlayersMessageFactory = MessageFactory(config.PROJECTNAME) Added: epwithgis.openlayers/trunk/epwithgis/openlayers/browser.py ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/browser.py Tue May 27 21:13:02 2008 @@ -0,0 +1,61 @@ +from Products.Five.browser import BrowserView +from zope.interface import implements +from Products.CMFCore.utils import getToolByName +from epwithgis.openlayers.interfaces import IOpenLayersBrowserView + +class OpenLayersBrowserView(BrowserView): + """the openLayers' browserview under construction""" + implements(IOpenLayersBrowserView) + def __init__(self, context, request): + self.context = context + self.request = request + + def extent(self): + return '4.612753601074219 44.16799144132104 4.642753601074219 44.167799144132104' + + def georss(self): + return self.context.test_mcol_rss() + + + def wms(self): + pptool = getToolByName(self.context, 'portal_properties') + ppmcol = pptool.epwithgisOpenLayers_properties + return ppmcol.getProperty('wms', []) + + def getParameters(self): + PROPERTY_SHEET = 'epwithgisOpenLayers_properties' + PROPERTY_FIELD = 'parameters' + portal_props = getToolByName(self.context, 'portal_properties') + property_sheet = getattr(portal_props, PROPERTY_SHEET) + parameters = getattr(property_sheet, PROPERTY_FIELD) + return parameters + + def getHeight(self): + PROPERTY_SHEET = 'epwithgisOpenLayers_properties' + PROPERTY_FIELD = 'height' + portal_props = getToolByName(self.context, 'portal_properties') + property_sheet = getattr(portal_props, PROPERTY_SHEET) + my_height = getattr(property_sheet, PROPERTY_FIELD) + return my_height + + def getGoogleKey(self): + PROPERTY_SHEET = 'epwithgisOpenLayers_properties' + PROPERTY_FIELD = 'google_key' + portal_props = getToolByName(self.context, 'portal_properties') + property_sheet = getattr(portal_props, PROPERTY_SHEET) + my_google_key = getattr(property_sheet, PROPERTY_FIELD) + return my_google_key + + def getWmsAsString(self): + PROPERTY_SHEET = 'epwithgisOpenLayers_properties' + PROPERTY_FIELD = 'wms' + portal_props = getToolByName(self.context, 'portal_properties') + property_sheet = getattr(portal_props, PROPERTY_SHEET) + wms= getattr(property_sheet, PROPERTY_FIELD) + wmsStr="" + for aux in wms : + aux.replace("\r","") + aux.replace("\"","") + wmsStr = wmsStr+aux + return wmsStr + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/config.py ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/config.py Tue May 27 21:13:02 2008 @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2008 JeanMichel FRANCOIS aka ToutPT + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +PROJECTNAME = "epwithgis.openlayers" +GLOBALS = globals() + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/configure.zcml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/configure.zcml Tue May 27 21:13:02 2008 @@ -0,0 +1,19 @@ +<configure + xmlns="http://namespaces.zope.org/zope" + xmlns:browser="http://namespaces.zope.org/browser" + xmlns:five="http://namespaces.zope.org/five" + xmlns:gs="http://namespaces.zope.org/genericsetup" + i18n_domain="epwithgis.openlayers"> + <gs:registerProfile + name="default" + title="Extending Plone with GIS: Openlayers" + directory="profiles/default" + description="Add OpenLayers to Plone3" + provides="Products.GenericSetup.interfaces.EXTENSION" /> + <browser:page + for="*" + class=".browser.OpenLayersBrowserView" + name="openlayer_browserview" + permission="zope2.View" + allowed_interface="epwithgis.openlayers.interfaces.IOpenLayersBrowserView" /> +</configure> Added: epwithgis.openlayers/trunk/epwithgis/openlayers/docs/HISTORY.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/docs/HISTORY.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,6 @@ +This egg is the result of a first effort from Makina Corpus to use OpenLayers +with Plone. The first products was called McOL, but not published cause the project +was finished to late. + +So we are trying here to rewrite it for Plone3, make it as customizable as possible (what +i m calling the "plone way"). \ No newline at end of file Added: epwithgis.openlayers/trunk/epwithgis/openlayers/docs/README.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/docs/README.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,16 @@ +================================= +epwithgis.openlayers package +================================= +.. contents:: + +What is epwithgis +============== +epwithgis means extending plone with geographic information system. The goals of epwithgis +package is to provide some tools to handle and display gis relative datas. + +What is epwithgis.openlayers ? +======================== +epwithgis.openlayers try to provide an integration of openlayers in Plone. It doesn't +add any content types to plone, it just provide a plone configuration adapted to use +openlayers in other templates. It provide some macro to make it easier to use openlayers. + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/docs/TODO.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/docs/TODO.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,2 @@ +* Write the TODO ! + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/doctests/README.txt ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/doctests/README.txt Tue May 27 21:13:02 2008 @@ -0,0 +1,6 @@ +======== +Doctests +======== + +This folder contains doctests for eptwithgis.openlayers package. + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/interfaces.py ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/interfaces.py Tue May 27 21:13:02 2008 @@ -0,0 +1,12 @@ +from zope.interface import Interface + +class IOpenLayersBrowserView(Interface): + """A browser view need to provide those methods to display OpenLayers""" + def layers(): + """Return a list of layers to provide""" + def extent(): + """Return the extent (zoom level) where the map must be initialized""" + def georss(): + """return a list of url to display""" + def kmls(): + """Return a list of url to display""" Added: epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/cssregistry.xml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/cssregistry.xml Tue May 27 21:13:02 2008 @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<object name="portal_css" meta_type="Stylesheets Registry"> + <stylesheet title="" cacheable="True" compression="safe" cookable="True" + enabled="1" expression="" id="epwithgisOpenLayers.css" media="all" rel="stylesheet" + rendering="import"/> +</object> + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/jsregistry.xml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/jsregistry.xml Tue May 27 21:13:02 2008 @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<object name="portal_javascripts" meta_type="JavaScripts Registry"> + <javascript cacheable="True" compression="safe" cookable="True" + enabled="True" expression="" id="Base.js" inline="False"/> + <javascript cacheable="True" compression="safe" cookable="True" + enabled="True" expression="" id="ManageOL.js" inline="False"/> + <javascript cacheable="True" compression="safe" cookable="True" + enabled="True" expression="" id="OpenLayers.js" inline="False"/> + <javascript cacheable="True" compression="safe" cookable="True" + enabled="True" expression="" id="Utils.js" inline="False"/> +</object> \ No newline at end of file Added: epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/properties.xml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/properties.xml Tue May 27 21:13:02 2008 @@ -0,0 +1,6 @@ +<?xml version="1.0"?> + <site> + <property name="title">Extending Plone With GIS OpenLayers</property> + <property name="description">Migration of McOL product on Plone 3.0</property> +</site> + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/propertiestool.xml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/propertiestool.xml Tue May 27 21:13:02 2008 @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<object name="portal_properties" meta_type="Plone Properties Tool"> + <object name="epwithgisOpenLayers_properties" meta_type="Plone Property Sheet"> + <property name="title">epwithgisOpenLayers_properties</property> + <property name="height" type="int">500</property> + <property name="google_key" type="string"></property> + <property name="parameters" type="string">1111</property> + <property name="wms" type="lines"> + <element value="Capabilities;http://map.ngdc.noaa.gov/servlet/com.esri.wms.Esrimap?servicename=glacier&WMTVER=1.0&request=GetCapabilities"/> + </property> + </object> +</object> Added: epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/skins.xml ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/profiles/default/skins.xml Tue May 27 21:13:02 2008 @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<object name="portal_skins" meta_type="Plone Skins Tool"> + <object name="epwithgisOpenLayers_javascripts" meta_type="Filesystem Directory View" + directory="epwithgis.openlayers:skins/javascripts"/> + <object name="epwithgisOpenLayers_templates" meta_type="Filesystem Directory View" + directory="epwithgis.openlayers:skins/templates"/> + <object name="epwithgisOpenLayers_images" meta_type="Filesystem Directory View" + directory="epwithgis.openlayers:skins/images"/> + <skin-path name="*"> + <layer name="epwithgisOpenLayers_images" insert-after="custom"/> + <layer name="epwithgisOpenLayers_javascripts" insert-after="custom"/> + <layer name="epwithgisOpenLayers_templates" insert-after="custom"/> + </skin-path> +</object> + Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_add_point_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_add_point_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_adegr_popup_background.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_blank.gif ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_close.gif ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_drag-rectangle-off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_drag-rectangle-on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_line_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_point_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_point_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_polygon_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_draw_polygon_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_east-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_line.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_line_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_point.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_point_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_polygon.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_draw_polygon_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_erase.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_erase_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_geocode.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_infoPolygon.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_line.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_line_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_polygon.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_measure_polygon_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_icon_validate.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_layer-switcher-maximize.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_layer-switcher-minimize.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-blue.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-gold.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker-green.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_marker.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_measuring-stick-off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_measuring-stick-on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_move_feature_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_move_feature_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_north-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_openlayer_draw_line_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_pan_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_pan_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_panning-hand-off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_panning-hand-on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_remove_point_off.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_remove_point_on.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_slider.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_south-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_spot_image.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_west-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-minus-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-plus-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoom-world-mini.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/images/openlayer_zoombar.png ============================================================================== Binary file. No diff available. Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/Base.js ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/Base.js Tue May 27 21:13:02 2008 @@ -0,0 +1,106 @@ +/* + Base, version 1.0.2 + Copyright 2006, Dean Edwards + License: http://creativecommons.org/licenses/LGPL/2.1/ +*/ + +var Base = function() { + if (arguments.length) { + if (this == window) { // cast an object to this class + Base.prototype.extend.call(arguments[0], arguments.callee.prototype); + } else { + this.extend(arguments[0]); + } + } +}; + +Base.version = "1.0.2"; + +Base.prototype = { + extend: function(source, value) { + var extend = Base.prototype.extend; + if (arguments.length == 2) { + var ancestor = this[source]; + // overriding? + if ((ancestor instanceof Function) && (value instanceof Function) && + ancestor.valueOf() != value.valueOf() && /\bbase\b/.test(value)) { + var method = value; + // var _prototype = this.constructor.prototype; + // var fromPrototype = !Base._prototyping && _prototype[source] == ancestor; + value = function() { + var previous = this.base; + // this.base = fromPrototype ? _prototype[source] : ancestor; + this.base = ancestor; + var returnValue = method.apply(this, arguments); + this.base = previous; + return returnValue; + }; + // point to the underlying method + value.valueOf = function() { + return method; + }; + value.toString = function() { + return String(method); + }; + } + return this[source] = value; + } else if (source) { + var _prototype = {toSource: null}; + // do the "toString" and other methods manually + var _protected = ["toString", "valueOf"]; + // if we are prototyping then include the constructor + if (Base._prototyping) _protected[2] = "constructor"; + for (var i = 0; (name = _protected[i]); i++) { + if (source[name] != _prototype[name]) { + extend.call(this, name, source[name]); + } + } + // copy each of the source object's properties to this object + for (var name in source) { + if (!_prototype[name]) { + extend.call(this, name, source[name]); + } + } + } + return this; + }, + + base: function() { + // call this method from any other method to invoke that method's ancestor + } +}; + +Base.extend = function(_instance, _static) { + var extend = Base.prototype.extend; + if (!_instance) _instance = {}; + // build the prototype + Base._prototyping = true; + var _prototype = new this; + extend.call(_prototype, _instance); + var constructor = _prototype.constructor; + _prototype.constructor = this; + delete Base._prototyping; + // create the wrapper for the constructor function + var klass = function() { + if (!Base._prototyping) constructor.apply(this, arguments); + this.constructor = klass; + }; + klass.prototype = _prototype; + // build the class interface + klass.extend = this.extend; + klass.implement = this.implement; + klass.toString = function() { + return String(constructor); + }; + extend.call(klass, _static); + // single instance + var object = constructor ? klass : _prototype; + // class initialisation + if (object.init instanceof Function) object.init(); + return object; +}; + +Base.implement = function(_interface) { + if (_interface instanceof Function) _interface = _interface.prototype; + this.prototype.extend(_interface); +}; Added: epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/ManageOL.js ============================================================================== --- (empty file) +++ epwithgis.openlayers/trunk/epwithgis/openlayers/skins/javascripts/ManageOL.js Tue May 27 21:13:02 2008 @@ -0,0 +1,600 @@ +/* Copyright (c) 2007 Makina Corpus, published under a modified BSD license. + * Sylvain Beorchia - syl...@ma... + * 3.10.2007 + */ + +/** + * Base class to manage OpenLayers + * + * @class + */ + +var ManageOL = Base.extend({ + constructor: function(mode,listFlux,tool,extent,wms,address) { + this.initialize(mode,listFlux,tool,extent,wms,address); + }, + /** + * Initial longitude if no extent is given + */ + initLon: 513890, //4.62, + /** + * Initial latitude if no extent is given + */ + initLat: 5489439, // 44.163, + /** + * Initial zoom if no extent is given + */ + initZoom: 13, + /** + * OpenLayers Map Object + */ + map: null, + /** + * Array of the drawing tools + */ + drawControls: null, + /** + * Array of the measuring tools + */ + measureControls: null, + /** + * Layer for points in Edit mode + */ + pointLayer: null, + /** + * Layer for lines in Edit mode + */ + lineLayer: null, + /** + * Layer for polygons in Edit mode + */ + polygonLayer: null, + /** + * Current tool in Edit mode (point, line, polygon) + */ + currentTool: null, + /** + * + */ + //select: null, + /** + * Layer for polygons coming from the GeoRSS + */ + georssVectorLayer: null, + /** + * + */ + //flux: null, + + /** + * @constructor + * + * @param {String} mode : edit or view + * @param {Array} listFlux : GeoRSS + * @param {String} tool : point, line or polygon + * @param {String} extent : extent to zoom in + * @param {Array} wms : wms to add (overlays) + * @param {String} address : address to search + */ + initialize: function(mode,listFlux,tool,extent,wms,address) { + + OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; + this.currentTool = tool; + + //var options = {numZoomLevels: 20, controls: []}; + //this.map = new OpenLayers.Map( 'map' , options); + + // Google Mercator projection + var options = { + numZoomLevels: 20, + controls: [], + projection: "EPSG:900913", + units: "m", + maxResolution: 156543.0339, + maxExtent: new OpenLayers.Bounds(-20037508, -20037508, + 20037508, 20037508.34) + //theme: '/ol_theme/ol_skin_gard.css' + //theme: 'http://localhost/ol_gard/ol_theme/ol_skin_gard.css' + }; + //OpenLayers.ImgPath = "ol_theme/img/"; + this.map = new OpenLayers.Map('map', options); + + + // Add Google base layers to the map + this.addBaseLayers(); + + // Add sublayers + // Sublayers are given in an array of WMS + var tabWms = wms.split("|"); + for(i = 0 ; i < tabWms.length ; i++) + { + var currentWms = tabWms[i].split(";"); + this.addSubLayer(currentWms[0],currentWms[1],currentWms[2]); + } + + // Unique layer for all georss polygons + this.georssVectorLayer = new OpenLayers.Layer.Vector("GeorssPolygone",{displayInLayerSwitcher:false}) + this.map.addLayer(this.georssVectorLayer); + + // Map settings + this.map.setCenter(new OpenLayers.LonLat(this.initLon, this.initLat), this.initZoom); + + // Layer switcher + var layerSwitcher = new OpenLayers.Control.LayerSwitcherTransparency() + this.map.addControl( layerSwitcher ); + //layerSwitcher.maximizeControl(); + + // Base Layer switcher + var baseLayerSwitcher = new OpenLayers.Control.BaseLayerSwitcher() + this.map.addControl( baseLayerSwitcher ); + + // Coords on map + var mousePosition = new OpenLayers.Control.MousePosition(); + this.map.addControl( mousePosition ); + + // Navigation tools + //var panzoombar = new OpenLayers.Control.PanZoomBarCustom(); + var panzoombar = new OpenLayers.Control.PanZoomBar(); + panzoombar.position = new OpenLayers.Pixel(5, 5); + var scale = new OpenLayers.Control.Scale(); + this.map.addControl(scale); + this.map.addControl(panzoombar); + this.map.addControl( new OpenLayers.Control.MouseDefaults() ); + + // Zoom to extent given in parameters + this.zoomTo(extent); + + // GeoRss (list given in parameter) + if(listFlux) + { + for(i = 0 ; i < listFlux.length ; i++) + { + // Get all types from flux + this.getTypesFromRss(listFlux[i].url); + } + } + + // If mode is Edit, then add drawing layers an set draw tools + if(mode == "edit") + { + this.addDrawlayers(); + } + this.setDrawTools(); + + // Set the measure tools + this.setMeasureTools(); + + // Geocodage, if an address is given + if(address != '') + { + this.getAddress(address); + } + }, + + /** + * + */ + destroy: function() { + }, + + /** + * Add base layers + **/ + addBaseLayers: function() { + var gsat = new OpenLayers.Layer.Google( "Image satellite" , {type: G_SATELLITE_MAP, 'sphericalMercator': true} ); + //var gsat = new OpenLayers.Layer.Google( "GoogleMaps Image satellite" , {type: G_SATELLITE_MAP} ); + gsat.addOptions({isBaseLayer: true, buffer: 1}); + var gmap = new OpenLayers.Layer.Google( "Carte" , {type: G_NORMAL_MAP, 'sphericalMercator': true} ); + //var gmap = new OpenLayers.Layer.Google( "GoogleMaps Carte" , {type: G_NORMAL_MAP} ); + gmap.addOptions({isBaseLayer: true, buffer: 1}); + var ghyb = new OpenLayers.Layer.Google( "Fond mixte" , {type: G_HYBRID_MAP, 'sphericalMercator': true} ); + //var ghyb = new OpenLayers.Layer.Google( "GoogleMaps Fond mixte" , {type: G_HYBRID_MAP} ); + ghyb.addOptions({isBaseLayer: true, buffer: 1}); + + /*gmap = new OpenLayers.Layer.GoogleMercator("Cartes"); + gsat = new OpenLayers.Layer.GoogleMercator("Photos",{type: G_SATELLITE_MAP}); + ghyb = new OpenLayers.Layer.GoogleMercator("Cartes & Photos",{type: G_HYBRID_MAP});*/ + this.map.addLayer(ghyb); + this.map.addLayer(gsat); + this.map.addLayer(gmap); + }, + + /** + * Geocode the given address + **/ + getAddress: function(address) { + geocoder = new GClientGeocoder(); + geocoder.getLocations(address+", france", addAddressToMap); + }, + + /** + * Center the map and add a marker on the map, according to the geolocalized address + **/ + addAddressToMap: function(response) { + if (!response || response.Status.code != 200) { + alert("Impossible de trouver ce lieu ("+response.Status.code+")"); + } else { + markersLayer = new OpenLayers.Layer.Markers("Geocodage"); + this.map.addLayer(markersLayer); + var place = response.Placemark[0]; + + var result = OpenLayers.Layer.SphericalMercator.forwardMercator(place.Point.coordinates[0], place.Point.coordinates[1]); + + //this.map.setCenter(new OpenLayers.LonLat(place.Point.coordinates[0],place.Point.coordinates[1]), map.zoom); + this.map.setCenter(new OpenLayers.LonLat(result.lon, result.lat), map.zoom); + var coordString = "POINT(" + place.Point.coordinates[0] + " " +place.Point.coordinates[1] + ")"; + document.getElementById("georef_coords").value = coordString; + + var icon = new OpenLayers.Icon("icon_geocode.png", new OpenLayers.Size(48,48)); + var marker = new OpenLayers.Marker( + //new OpenLayers.LonLat(place.Point.coordinates[0], place.Point.coordinates[1]), + new OpenLayers.LonLat(result.lon, result.lat), + icon//, + //new OpenLayers.Size(20,34),new OpenLayers.Pixel(-10, -30) + ); + markersLayer.addMarker(marker); + + /*marker.events.register("mousedown", marker, function() { + goTo(adherent.lon,adherent.lat,adherent.getContentForMarker()) + }); + marker.events.register("mousemove", marker, function() { + openInfoWindow(adherent.lon,adherent.lat,adherent.getContentForMarker()) + });*/ + } + }, + + /** + * Zoom the map to extent given in parameters + **/ + zoomTo: function(extent) { + // convert coords before (lat/lon to mercator) + extent = this.convToMercator(extent); + if(extent != "" && extent != "None") + { + var tabExtent = extent.split(" "); + if(tabExtent[0] == tabExtent[2] && tabExtent[1] == tabExtent[3]) + { + this.map.setCenter(new OpenLayers.LonLat(tabExtent[0], tabExtent[1]), this.initZoom); + } + else + { + bounds = new OpenLayers.Bounds(tabExtent[0],tabExtent[1],tabExtent[2],tabExtent[3]); + this.map.zoomToExtent(bounds); + } + } + }, + + /** + * initialize AJAX request for analysing the rss + **/ + getTypesFromRss: function(rss) { + // Read the RSS and get all the items types + OpenLayers.loadURL(rss, null, this, this.readRss); + }, + + /** + * Ajax, read the RSS, and get all items types + **/ + readRss: function(ajaxRequest) { + var doc = ajaxRequest.responseXML; + var url = doc.baseURI; + if (!doc || ajaxRequest.fileType!="XML") { + doc = OpenLayers.parseXMLString(ajaxRequest.responseText); + } + + var itemlist = null; + try { + itemlist = doc.getElementsByTagNameNS('*', 'entry'); + } + catch(e) { + itemlist = doc.getElementsByTagName('entry'); + } + + var tabTypes = new Array(); + for (var i = 0; i < itemlist.length; i++) { + var type = OpenLayers.Util.getNodes(itemlist[i],"type")[0].firstChild.nodeValue + typeListed = false; + for(var j = 0 ; j < tabTypes.length ; j++) { + if(tabTypes[j] == type) + typeListed = true; + } + if(!typeListed) + tabTypes[tabTypes.length] = type; + } + + // Add the items on map, filtered with types + for(var i = 0 ; i < tabTypes.length ; i++) { + this.addGeoRSS(tabTypes[i],url,ajaxRequest.responseText); + } + }, + + + /** + * Add Sub Layer (WMS) + **/ + addSubLayer: function(title,wms,layersList) { + if(title == "" || wms == "" || layersList == "") + return; + if(!title || !wms || !layersList) + return; + + var newLayer = new OpenLayers.Layer.WMS( "Wms/"+title, wms, {layers: layersList, format: 'png'}); + newLayer.addOptions({isBaseLayer: false, buffer: 1, reproject:false, visibility: false}); + //'reproject': false, 'opacity': 0.4, + //'isBaseLayer': false,'wrapDateLine': true + this.map.addLayer(newLayer); + }, + + /** + * Add drawing layers, in Edit mode + **/ + addDrawlayers: function() { + if(this.currentTool == "point") + { + this.pointLayer = new OpenLayers.Layer.Vector("Dessin points",{displayInLayerSwitcher:false}); + this.pointLayer.onFeatureInsert= function(feature) {onFeatureInsert();} + this.map.addLayer(this.pointLayer); + } + if(this.currentTool == "line") + { + this.lineLayer = new OpenLayers.Layer.Vector("Dessin lignes",{displayInLayerSwitcher:false}); + this.lineLayer.onFeatureInsert= function(feature) {onFeatureInsert();} + this.map.addLayer(this.lineLayer); + } + if(this.currentTool == "polygon") + { + this.polygonLayer = new OpenLayers.Layer.Vector("Dessin polygones",{displayInLayerSwitcher:false}); + this.polygonLayer.onFeatureInsert= function(feature) {onFeatureInsert();} + this.map.addLayer(this.polygonLayer); + //this.map.addControl(new OpenLayers.Control.EditingToolbar(this.polygonLayer)); + } + }, + + /** + * Once a feature (edit mode) is drawn, erase all previous, and fill the hidden field with the feature's coords + **/ + onFeatureInsert: function(feature) { + this.eraseAll(1); + this.validateGeometry(); + }, + + /** + * Set the draw tools + **/ + setDrawTools: function() { + var options = {handlerOptions: {freehand: false}}; + var optionsMeasure = { + displayUnits: 'km', + handlerOptions: {freehand: false,persist: true} + }; + this.drawControls = { + point: new OpenLayers.Control.DrawFeature(this.pointLayer,OpenLayers.Handler.Point), + line: new OpenLayers.Control.DrawFeature(this.lineLayer,OpenLayers.Handler.Path, options), + polygon: new OpenLayers.Control.DrawFeature(this.polygonLayer,OpenLayers.Handler.Polygon, options) + /*select: new OpenLayers.Control.SelectFeature(this.georssVectorLayer, { + onSelect: this.onPolygonFeatureSelect, + onUnselect: this.onPolygonFeatureUnselect + })*/ + }; + + for(var key in this.drawControls) { + this.map.addControl(this.drawControls[key]); + } + }, + + /** + * Set the measure tools + **/ + setMeasureTools: function() { + var options = { + displayUnits: 'km', + handlerOptions: { + freehand: false, + persist: true + } + }; + this.measureControls = { + measureLine: new OpenLayers.Control.Measure(OpenLayers.Handler.Path, options), + measurePolygon: new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon, options) + }; + + var control; + for(var key in this.measureControls) { + control = this.measureControls[key]; + control.onMeasure = this.handleMeasurements; + this.map.addControl(control); + } + }, + + + /** + * Handle the measurements + **/ + handleMeasurements: function handleMeasurements(geometry, length, area, units) { + var element = document.getElementById('outputMeasure'); + var out = ""; + if(geometry.CLASS_NAME == "OpenLayers.Geometry.LineString") { + out += "Longueur: " + length.toFixed(3) + " " + units; + } else { + out += "Périmètre: " + length.toFixed(3) + " " + units + "<br>"; + out += "Surface: " + area.toFixed(3) + " " + units + "<sup>2</" + "sup>"; + } + element.innerHTML = out; + }, + + /** + * + **/ + measure: function (type) { + for(key in this.measureControls) { + var control = this.measureControls[key]; + if(type == key) { + control.activate(); + } else { + control.deactivate(); + } + } + }, + + /** + * + **/ + /*onPolygonFeatureSelect: function(feature) { + popup = feature.popup; + popup.show(); + this.map.addPopup(popup); + },*/ + + /** + * + **/ + /*onPolygonFeatureUnselect: function(feature) { + feature.popup.hide(); + },*/ + + /** + * When a tool is selected, activate the tool + **/ + draw: function(type) { + for(key in this.drawControls) + { + var control = this.drawControls[key]; + if(type == key) + control.activate(); + else + control.deactivate(); + } + }, + + /** + * Validate geometry, ie fill the hidden field with the feature's coords + **/ + validateGeometry: function() { + // One only geometry + if(this.currentTool == "point") + for(i = 0 ; i < this.pointLayer.features.length ; i++) + document.getElementById("georef_coords").value = this.convToLonLat(this.pointLayer.features[i].geometry); + if(this.currentTool == "line") + for(i = 0 ; i < this.lineLayer.features.length ; i++) + document.getElementById("georef_coords").value = this.convToLonLat(this.lineLayer.features[i].geometry); + if(this.currentTool == "polygon") + for(i = 0 ; i < this.polygonLayer.features.length ; i++) + document.getElementById("georef_coords").value = this.convToLonLat(this.polygonLayer.features[i].geometry); + }, + + /** + * Erase all features except the last one if needed + **/ + eraseAll: function(exceptLast) { + if(this.currentTool == "point") + for(i = 0 ; i < this.pointLayer.features.length-exceptLast ; i++) + this.pointLayer.removeFeatures(this.pointLayer.features[i]); + if(this.currentTool == "line") + for(i = 0 ; i < this.lineLayer.features.length-exceptLast ; i++) + this.lineLayer.removeFeatures(this.lineLayer.features[i]);openlayer_ + if(this.currentTool == "polygon") + for(i = 0 ; i < this.polygonLayer.features.length-exceptLast ; i++) + this.polygonLayer.removeFeatures(this.polygonLayer.features[i]); + document.getElementById("georef_coords").value = ""; + if(!exceptLast) + this.draw(''); + }, + + /** + * Read and display the GeoRSS + **/ + addGeoRSS: function(type,url,rssTxt) { + var icon = new OpenLayers.Icon("openlayer_icon_"+type+".png", new OpenLayers.Size(48,48)); + //flux = new OpenLayers.Layer.FilterGeoRSS(type, url, type,{'icon':icon}); + flux = new OpenLayers.Layer.FilterGeoRSS("Informations/"+type, url, type,{'icon':icon}); + this.map.addLayer(flux); + flux.parseData(rssTxt); + }, + + /** + * + **/ + /*removeGeoRSS: function(type) { + for(i = 0 ; i < this.map.layers.length ; i++) + { + if(this.map.layers[i].name == type) + this.map.removeLayer(map.layers[i]); + + // If polygon layer, specific traitment + if(this.map.layers[i].name == type + " (polygone)") + this.map.removeLayer(map.layers[i]); + } + },*/ + + /** + * Convert coords from lon/lat to mercator + **/ + convToMercator: function(extent) { + if(extent != "" && extent != "None") + { + var tabExtent = extent.split(" "); + if(tabExtent[0] == tabExtent[2] && tabExtent[1] == tabExtent[3]) + { + var result = OpenLayers.Layer.SphericalMercator.forwardMercator(tabExtent[0]*1.0, tabExtent[1]*1.0); + tabExtent[0] = tabExtent[2] = result.lon; + tabExtent[1] = tabExtent[3] = result.lat; + extent = tabExtent[0]+" "+tabExtent[1]+" "+tabExtent[2]+" "+tabExtent[3]; + } + else + { + var result = OpenLayers.Layer.SphericalMercator.forwardMercator(tabExtent[0]*1.0, tabExtent[1]*1.0); + tabExtent[0] = result.lon; + tabExtent[1] = result.lat; + var result = OpenLayers.Layer.SphericalMercator.forwardMercator(tabExtent[2]*1.0, tabExtent[3]*1.0); + tabExtent[2] = result.lon; + tabExtent[3] = result.lat; + extent = tabExtent[0]+" "+tabExtent... [truncated message content] |