2011-10-03 15 views
7

मैं एक एप्लीकेशन विकसित कर रहा हूं, जिसमें से कुछ ओपनलेयर का उपयोग करता है (एक जियोसरवर द्वारा प्रदत्त WMS को कॉल करना) कुछ अक्सर अद्यतन डेटा (एक पोत ट्रैक - या अधिक विशेष रूप से, अंक की एक श्रृंखला) प्रदर्शित करता है।ओपनलेयर रीफ्रेश स्ट्रैटजी समस्याएं

मैं इस जहाज ट्रैक को एक सेट अंतराल पर अपडेट करना चाहता हूं - OpenLayers.Strategy.Refresh ऐसा करने के लिए सबसे अधिक ऐपप्रोराइट तरीका जैसा लगता है। मैं wms.html उदाहरण (OpenLayers 2.11) थोड़ा इस कोशिश करने के लिए, यानी संशोधित:

underway = new OpenLayers.Layer.WMS("Underway Data", 
    "http://ubuntu-geospatial-server:8080/geoserver/underway/wms", 
    {'layers': 'underway:ss2011_v03', transparent: true, format: 'image/gif'}, 
    {isBaseLayer: false}, 
    {strategies : [new OpenLayers.Strategy.Refresh({interval: 6000})]} 
); 

map.addLayers([layer, underway]); 

मैं क्या बता सकते हैं, इस काम करना चाहिए के रूप में है (यानी चल परत हर 6 सेकंड ताज़ा करें), फिर भी कुछ नहीं हो जाता। अंतर्निहित WMS अपडेट हो रहा है - यदि मैं मैन्युअल रूप से मानचित्र रीफ्रेश करता हूं, तो अपडेट किया गया डेटा दिखाई देगा।

मुझे यकीन है कि मुझे कुछ स्पष्ट रूप से याद आ रही है, किसी भी मदद की बहुत सराहना की जाएगी। मुझे फायरबग या कुछ भी कोई त्रुटि नहीं मिल रही है, यह कुछ भी नहीं कर रहा है।

उत्तर

10

अच्छा, यह पता चला है कि आप डब्लूएमएस सेवा पर रीफ्रेश रणनीति नहीं कर सकते, जहां तक ​​मैं कह सकता हूं। तो मैंने इसके कोड को WFS का उपयोग करने के लिए रूपांतरित कर दिया, और यह अपेक्षित के रूप में काम करता है। कोड:

 underway = new OpenLayers.Layer.Vector("WFS", { 
      strategies: [new OpenLayers.Strategy.BBOX(), new OpenLayers.Strategy.Refresh({interval: 4000, force: true})], 
      protocol: new OpenLayers.Protocol.WFS({ 
       url: "http://ubuntu-geospatial-server:8080/geoserver/wfs", 
       featureType: "ss2011_v03", 
       featureNS: "http://csiro.au/underway", 
       geometryName: "position" 
      }); 

ध्यान दें कि मुझे एक बीबीओएक्स रणनीति भी चाहिए। मुझे मिला एक और गॉचा था कि मुझे ज्यामितिनाम मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता थी, अन्यथा यह "the_geom" के लिए डिफ़ॉल्ट होगा, जो मेरी परत के लिए मौजूद नहीं है।

-2

मुझे पूरा यकीन है कि आपको काम करने के लिए new OpenLayers.Strategy.Static() रणनीति जोड़ने की आवश्यकता है। और आपको अपनी Refresh रणनीति को सक्रिय करने की आवश्यकता है जिसका अर्थ है कि आपको इसे एक अलग चर में रखना होगा।

+0

कोई खुशी नहीं है। मैं OpenLayers.Strategy.Static() या तो ट्रंक या 2.11 में नहीं मिला। मैंने कुछ अन्य रणनीतियों को स्थापित करने की कोशिश की जो ऐसा लग रहा था कि वे संभवतः काम कर सकते हैं (बीबॉक्स, निश्चित), लेकिन कोई अच्छा नहीं। मेरा संशोधित कोड इस तरह दिखता है: 'bboxStrategy = new OpenLayers.Strategy.BBOX(); bboxStrategy.setLayer (चल रहा है); bboxStrategy.activate(); refreshStrategy = new OpenLayers.Strategy.Refresh ({अंतराल: 2000, बल: सत्य}); refreshStrategy.setLayer (चल रहा है); refreshStrategy.activate(); ' लेकिन इसके परिणामस्वरूप एक ही समस्या हुई, कुछ भी नहीं हो रहा था। – Caligari

संबंधित मुद्दे