Changeset 687

Show
Ignore:
Timestamp:
03/15/07 16:04:42 (2 years ago)
Author:
sgillies
Message:

Add a toJS method and js view for Geo-JSON collections

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • PleiadesOpenLayers/trunk/browser/configure.zcml

    r347 r687  
    2323    /> 
    2424 
     25  <browser:page   
     26    for="Products.PleiadesOpenLayers.interfaces.feature.IMapFeature" 
     27    name="js" 
     28    class=".feature.MapFeatureView" 
     29    attribute="toJS" 
     30    permission="zope.Public" 
     31    allowed_interface=".feature.IMapFeatureView" 
     32    /> 
     33 
    2534</configure> 
    2635 
  • PleiadesOpenLayers/trunk/browser/feature.py

    r347 r687  
    3434from Products.Five import BrowserView 
    3535 
    36 from Products.PleiadesGeocoder.interfaces import IGeoItemSimple 
     36from Products.PleiadesGeocoder.interfaces import IGeoItemSimple \ 
     37    , IGeoCollectionSimple 
    3738 
    3839 
     
    4041 
    4142    def toJSON(): 
     43        """Return context as JSON data.""" 
     44     
     45    def toJS(): 
    4246        """Return context as JSON data.""" 
    4347 
     
    6266        return simplejson.dumps(m) 
    6367 
     68    def toJS(self): 
     69        collection = IGeoCollectionSimple(self.context) 
     70        infos = [] 
     71        for item in collection.geoItems(): 
     72            info = item.getInfo() 
     73            m = {'geometryType': item.getGeometryType(), 
     74                 'spatialCoordinates': item.getSpatialCoordinates(), 
     75                 'srs': item.getSRS(), 
     76                 'id': info['id'], 
     77                 'title': info['title']} 
     78            try: 
     79                m['center'] = item.getSpatialCoordinates()[0] 
     80            except: 
     81                m['center'] = None 
     82            infos.append(m) 
     83        return simplejson.dumps({'features': infos}) 
    6484 
  • PleiadesOpenLayers/trunk/configure.zcml

    r352 r687  
    1515 
    1616  <five:implements 
     17    class="Products.ATContentTypes.content.folder.ATFolder" 
     18    interface=".interfaces.feature.IMapFeature" 
     19    /> 
     20 
     21  <five:implements 
     22    class="Products.ATContentTypes.content.topic.ATTopic" 
     23    interface=".interfaces.feature.IMapFeature" 
     24    /> 
     25 
     26  <five:implements 
    1727    class=".content.MapContext.MapContext" 
    1828    interface=".interfaces.ows.IMapContext" 
  • PleiadesOpenLayers/trunk/tests/MapFeature.txt

    r352 r687  
    1818Add a doc and georeference it 
    1919 
     20    >>> id = folder.invokeFactory('Folder', id='docs') 
     21    >>> folder = folder.docs 
    2022    >>> id = folder.invokeFactory('Document', id='aaa') 
    2123    >>> document = getattr(folder, id) 
     
    4749    '{"center": [37.71446, 28.72886, 0.0], "title": "AAA", "spatialCoordinates": [[37.71446, 28.72886, 0.0]], "srs": "EPSG:4326", "geometryType": "point", "id": "aaa"}' 
    4850 
     51    >>> folder_url = folder.absolute_url() 
     52    >>> browser.open("%s/js" % folder_url) 
     53    >>> browser.contents 
     54    '{"features": [{"center": [37.71446, 28.72886, 0.0], "title": "AAA", "spatialCoordinates": [[37.71446, 28.72886, 0.0]], "srs": "EPSG:4326", "geometryType": "point", "id": "aaa"}]}' 
     55