জিওজেএসন বহুভুজগুলি কীভাবে লেবেল করবেন?


10

আমি জিওজেসন বৈশিষ্ট্যের সাথে লিফলেট ব্যবহার করছি using জিওজেএসন বৈশিষ্ট্যগুলি লেবেল করার কোনও উপায় আছে (এই ক্ষেত্রে - বহুভুজ)? এটি থেকে লেবেল পাওয়া উচিত

feature.properties.name 

এটি আমার কোড যেখানে আমি মনে করি আমি লেবেলটি সন্নিবেশ করতে পারলাম:

function style(feature) {
            return {
                weight: 2,
                opacity: 1,
                color: 'white',
                dashArray: '3',
                fillOpacity: 0.7,
                fillColor: getColor(feature.properties.coloring)
            };
        }

1
আপনি যদি বহুপাশে এখনও লেবেল ব্যবহার করার সমাধানটি পোস্ট করেন, তবে কি পোস্টটি আপত্তি করতে পারে?
a1an

উত্তর:


6

লিফলেটটি আপনার প্রত্যাশিত ফর্ম্যাটটি জানতে হবে need RFM। উদাহরণ: ওপেনলায়ার্স আশা করে যে এই জিওএসএন ফর্ম্যাটটি একটি পয়েন্ট তৈরি করবে এবং কিছু কাস্টম বৈশিষ্ট্য দেবে:

{"type":"FeatureCollection",
    "features":[
        {"type":"Feature",
            "properties":{
                "name":"TRON-02",
                "serial":"TRON002",
                "bearing":0,
                "color":"green",
                "size":15,
                "image":"img/unit_map3.png",
            },
            "geometry":{
                "type":"Point",
                "coordinates":[-50.06542968749966,-23.749149728383717]
            }
        }
    ]
}

আপনি দেখতে পাচ্ছেন, আমি একটি জ্যামিতি (পয়েন্ট) তৈরি করেছি এবং এর সাথে আমার বৈশিষ্ট্যগুলিতে যোগদান করেছি। আমি যখন এটি ওপেনলায়ারসে প্রেরণ করব, ফলাফলটি মানচিত্রে পয়েন্টটি কাস্টমাইজ করতে "রঙ" এবং "নাম" (লেবেল হিসাবে) ব্যবহার করে @ অ্যারাগন এর উদাহরণে খাপ খায়।

দয়া করে http://json.parser.online.fr/ এ জিওজেএসন উদাহরণটি অনুলিপি করুন এবং আটকান বা নিজের চেষ্টা ও বৈধতা দেওয়ার জন্য সাইটটি ব্যবহার করুন।


বহুভুজ সম্পর্কে প্রশ্ন ছিল না? পয়েন্ট জ্যামিতি সম্পর্কে একটি উত্তর কীভাবে প্রশ্নটির সমাধান করেছে?

বহুভুজ কী? আপনি নাম হিসাবে একই হবে। একমাত্র জিনিসটি বদলে যাবে "জ্যামিতি" অংশ। কেবল প্রশ্নের সমাধানই করেননি তবে এখন পর্যন্ত ৫ টি আপস পেয়েছেন।
ম্যাগনো সি

তারপরে আমাকে পুনরায় জবাব দেওয়া যাক: আমার একই প্রশ্ন রয়েছে এবং বহুভুজের উপর একটি লেবেল স্থাপন করা এটি একটি বিন্দুতে রাখার চেয়ে আলাদা so এজন্য আমার কিছু বিশদ পাওয়ার আগ্রহ রয়েছে, তাই আমার প্রথম মন্তব্য। একটি "এটি এটি সমাধান করেছিল" উত্তরটি তেমন সহায়ক নয় তবে যাইহোক ধন্যবাদ :-)
a1an

1
কেবল "বৈশিষ্ট্যগুলি" স্টাফ যুক্ত করুন এবং সব ঠিক হয়ে যাবে। @ অ্যারাগন উত্তর দেখুন return feature.properties.color;আপনি দেখতে পারেন যে propertiesএটি একটি featureবৈশিষ্ট্য এবং এর colorঅন্যতম বৈশিষ্ট্য রয়েছে have আপনি নিজের ইচ্ছামত যে কোনও কিছু এই উপায় অনুসরণ করে রাখতে পারেন।
ম্যাগনো সি

2
RFMসম্পূর্ণরূপে জন্য উদাহীন। এবং একটি বহুভুজের মধ্যে পার্থক্য তাৎপর্যপূর্ণ, যেহেতু কোন জ্যামিতিটি ব্যবহার করা উচিত তা জেনে রাখা এখানে ঠিক সমস্যা
স্টিফেন লিড

5

লিফলেট পলিগনস এবং লেবেলগুলির সাহায্যে এটি কীভাবে সমাধান করেছি তা এখানে রয়েছে যাতে আপনি বহুভুজটির নামের বৈশিষ্ট্য সহ একটি ভাসমান লেবেল পান।

ধরুন:

  • আপনি জেসন প্রতিক্রিয়াটি ভেরিয়েবল জসন-এ পার্স করেছেন
  • জসন-এ কোনও ছিদ্র ছাড়াই কেবলমাত্র সরল বহুভুজ রয়েছে
  • বহুভুজ_ স্টাইল আপনার শৈলীর ফাংশন দ্বারা ফিরে আসা শৈলীর বিকল্প ধারণ করে
  • Labels_layer হ'ল লিফলেট লেয়ারগ্রুপ (বা সরাসরি আপনার মানচিত্র)

তারপর:

for ( var i=0; i < json.features.length; i++ ) {
    feat = json.features[i];
    coords = [];
    for ( var j = 0 ; j < feat.geometry.coordinates[0].length - 1; j++ ) {
        coord = feat.geometry.coordinates[0][j];
        point = [];
        point.push( coord[1], coord[0]);
        coords.push( point );
    }
    labels_layer.addLayer(L.polygon( coords, polygon_style ).bindLabel(feat.properties.name))  ;
}

উল্লেখযোগ্যভাবে অদ্ভুতভাবে যথেষ্ট, জিওজেসন (আসলে ইপিএসজি: 4326) এবং লিফলেট স্থানাঙ্কগুলি যথাযথভাবে অদলবদল করা হয়েছে।


1
লিফলেট ০.০+ ব্যবহার করে তাদের জন্য, এল.বেবেলকে লিফলেট কোরে এল.টুলটিপ হিসাবে স্থানান্তরিত করা হয়েছে এবং প্লাগইনটি হ্রাস করা হয়েছে। আপনি bindLabel () এর পরিবর্তে bindTooltip () ব্যবহার করবেন। github.com/Leaflet/Leaflet.label
এথেরজি

1

আমি মনে করি এই প্রশ্নটি ওপেনলায়ার সম্পর্কিত if তাই, আপনি লেবেলিংয়ের জন্য ব্যবহার করতে পারেন;

var style = new OpenLayers.Style({
    weight: 2,
    opacity: 1,
    color: 'white',
    dashArray: '3',
    fillOpacity: 0.7,
    fillColor: "${getColor}",  
    label: "${getLabel}"
  } , {
    context: {
      getColor: function(feature) {
        return feature.properties.color;
      },
      getLabel: function(feature) {
        return feature.properties.name;
      }
    }
  );

আমি এটি আপনাকে সাহায্য করে আশা করি...


1
এটি ওপেনলায়ার্স নয়। আমি জিওজেসন বৈশিষ্ট্যের সাথে লিফলেট ব্যবহার করছি। সুতরাং এটি কাজ করে না। তবে চেষ্টা করার জন্য আপনাকে ধন্যবাদ।
এপ্রবাহ

আপনি কেন fillColor: "${color}"একটি ফাংশন তৈরির পরিবর্তে না ?
ম্যাগনো সি

1
@ ম্যাগনো সি আপনার পয়েন্টের মধ্যে কোনও পার্থক্য নেই them উভয়ই একই রকম। আপনি এলোমেলো রঙ বা অন্য কিছু হিসাবে আরও জটিল ফাংশন যুক্ত করতে চাইলে আমি এটি লিখেছি। এখনও আপনার বক্তব্য জন্য আপনাকে ধন্যবাদ।
অ্যারাগন

বুঝেছি আর্গন। নতুন পদ্ধতির জন্য ধন্যবাদ। ভবিষ্যতে কার্যকর হতে পারে। থাম্বস ইউপি!
ম্যাগনো সি

আমি মনে করি যে জিগজেসনের একটি স্পেসিফিকেশন রুলিং রয়েছে সেখান থেকে আমি যে ফর্ম্যাটটি দেখিয়েছি তা থেকে কোনও উপায় নেই বাগানস্ট্লো প্রবাহিত হবে: লিঙ্ক
ম্যাগনো সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.