কীভাবে ওপেনলায়ারসে কোনও কেএমএল স্তর গতিশীলভাবে রিফ্রেশ / পুনরায় লোড করবেন


9

আমি পূর্বে এই প্রশ্নটি কোনও লাভ হয়নি, তাই আমি ভেবেছিলাম এটি এখানে রেখে দেওয়া ভাল ধারণা হবে।

এখানে একটি উদাহরণ:

কীভাবে ওপেনলায়ারসে কেএমএল স্তর রিফ্রেশ / পুনরায় লোড করবেন। ডায়নামিক কেএমএল স্তর। আমার উত্তর নীচে দেখুন।


টিএলডিআর: নীচে আমার উত্তর দেখুন।

উত্তর:


7

দেখে মনে হয়েছে যে এটির পক্ষে তথ্য খুঁজে পাওয়া আমার পক্ষে যথেষ্ট কঠিন ছিল তবে আমি এটি যুক্ত করব:


1)

কেএমএল স্তরটি তৈরি করুন:

            //Define your KML layer
            var MyKmlLayer= new OpenLayers.Layer.Vector("This Is My KML Layer", {
                //Set your projection and strategies//
                projection: new OpenLayers.Projection("EPSG:4326"),
                strategies: [new OpenLayers.Strategy.Fixed()],
                //set the protocol with a url//
                protocol: new OpenLayers.Protocol.HTTP({
                    //set the url to your variable//
                    url: mykmlurl,
                    //format this layer as KML//
                    format: new OpenLayers.Format.KML({
                        //maxDepth is how deep it will follow network links//
                        maxDepth: 1,
                        //extract styles from the KML Layer//
                        extractStyles: true,
                        //extract attributes from the KML Layer//
                        extractAttributes: true
                    })
                })
            });

2)

কেএমএল স্তরটির জন্য ইউআরএল সেট করুন:

//note that I have host equal to location//   //Math.Random will stop caching//
var mykmlurl= 'http://' + host + '/KML?key=' + Math.random();

3)

আপনার স্তরটি রিফ্রেশ করার জন্য বিরতিটি সেট করুন:

           //function called// //timer// //layer to refresh//
window.setInterval(UpdateKmlLayer, 5000, MyKmlLayer);

4)

স্তরটি আপডেট করার জন্য ফাংশন:

            function UpdateKmlLayer(layer) {
                //setting loaded to false unloads the layer//
                layer.loaded = false;
                //setting visibility to true forces a reload of the layer//
                layer.setVisibility(true);
                //the refresh will force it to get the new KML data//
                layer.refresh({ force: true, params: { 'key': Math.random()} });
                //- <3 from Thqr -//
            }

আশা করে এটি এটি অন্য কারও পক্ষে সহজ করে তোলে। শুভকামনা।


যদি আপনার কেএমএল স্থানীয় হয় বা নেটওয়ার্ক ড্রাইভে থাকে?
ফুরলং

2

আমি এটিকে ঘিরে ধরেছিলাম কোনও লাভ হয়নি। কেউ আমার কোডটি একবার দেখে আমাকে বলছেন যে আমি কী ভুল করছি? ধন্যবাদ!

<html>
<head>
<title>Test</title>
<link rel="stylesheet" href="http://openlayers.org/api/theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="http://openlayers.org/dev/examples/style.css" type="text/css" />
<script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAl9RMqSzhPUXAfeBCXOussRTQDbvAygy0cfGJr8dEMAYKf3RWNBQqP9mjKIsqTfmAlz5LOJ3Xpy5s4w'></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">

  var map;

  function init() {
    // Create the map object
    map = new OpenLayers.Map('map');
    // Create a Google layer
    var gmap = new OpenLayers.Layer.Google(
        "Google Streets", // the default
        {numZoomLevels: 20}
    );
    // Add layer to map
    map.addLayer(gmap);

    map.setCenter(new OpenLayers.LonLat(-112.1161, 33.6636), 13);         
  }

  var MyKmlLayer= new OpenLayers.Layer.Vector("This Is My KML Layer", {
            //Set your projection and strategies//
            projection: new OpenLayers.Projection("EPSG:4326"),
            strategies: [new OpenLayers.Strategy.Fixed()],
            //set the protocol with a url//
            protocol: new OpenLayers.Protocol.HTTP({
                //set the url to your variable//
                url: C:/Users/person/desktop/test.kml,
                //format this layer as KML//
                format: new OpenLayers.Format.KML({
                    //maxDepth is how deep it will follow network links//
                    maxDepth: 1,
                    //extract styles from the KML Layer//
                    extractStyles: true,
                    //extract attributes from the KML Layer//
                    extractAttributes: true
                })
            })
        });

    var proposedanchorpositionurl = 'http://' + host + '/KML?key=' + Math.random();

    window.setInterval(UpdateKmlLayer, 5000, MyKmlLayer);

    function UpdateKmlLayer(layer) {
            //setting loaded to false unloads the layer//
            layer.loaded = false;
            //setting visibility to true forces a reload of the layer//
            layer.setVisibility(true);
            //the refresh will force it to get the new KML data//
            layer.refresh({ force: true, params: { 'key': Math.random()} });
            //- <3 from Thqr -//
        }
</script>
</head>
<body onload="init()">
<h1 id="title">test</h1>
<div id="map" class=""></div>
</body>
</html>

তাই দুঃখিত, আমাকে আপনার অসম্পূর্ণ কোডগুলি সংশোধন করতে হয়েছিল। এই সময় চালানো উচিত।



0

অরক্ষিত কিন্তু এই জাতীয় কিছু?

<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">

  var map;

  function init() {
    // Create the map object
    map = new OpenLayers.Map('map');
    // Create a Google layer
    var gmap = new OpenLayers.Layer.Google(
        "Google Streets", // the default
        {numZoomLevels: 20}
    );
    // Add layer to map
    map.addLayer(gmap);

    map.setCenter(new OpenLayers.LonLat(-112.1161, 33.6636), 13);         


  var KMLURL = 'C:/Users/person/desktop/test.kml?' + Math.random();

  var MyKmlLayer= new OpenLayers.Layer.Vector("This Is My KML Layer", {
            //Set your projection and strategies//
            projection: new OpenLayers.Projection("EPSG:4326"),
            strategies: [new OpenLayers.Strategy.Fixed()],
            //set the protocol with a url//
            protocol: new OpenLayers.Protocol.HTTP({
                //set the url to your variable//
                url: KMLURL,
                //format this layer as KML//
                format: new OpenLayers.Format.KML({
                    //maxDepth is how deep it will follow network links//
                    maxDepth: 1,
                    //extract styles from the KML Layer//
                    extractStyles: true,
                    //extract attributes from the KML Layer//
                    extractAttributes: true
                })
            })
        });

    window.setInterval(UpdateKmlLayer, 5000, MyKmlLayer);

    function UpdateKmlLayer(layer) {
            //setting loaded to false unloads the layer//
            layer.loaded = false;
            //setting visibility to true forces a reload of the layer//
            layer.setVisibility(true);
            //the refresh will force it to get the new KML data//
            layer.refresh({ force: true, params: { 'key': Math.random()} });
            //- <3 from Thqr -//
        }
 }
</script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.