ওপ্লেলেয়ার্স 3 এ বিজ্ঞপ্তি বহুভুজ কীভাবে তৈরি করবেন?


10

সুতরাং আমি সত্যিই এই উদাহরণটি সংশোধন করতে চাই: http://openlayers.org/en/v3.0.0/exults/tissot.html?q=circles

সমস্যাটি হ'ল আমি যখন আমার মানচিত্রে এটি প্রয়োগ করার চেষ্টা করি তখন এটি কার্যকর হয় না, সম্ভবত আমি ওএসএম শৈলী ব্যবহার করি যা গোলক নয়:

var map = new ol.Map({
  layers: [
    new ol.layer.Tile({
        source: new ol.source.OSM()
      }),
    new ol.layer.Vector({
      source: vectorSource
    })
  ],
  renderer: 'canvas',
  target: 'map',
  view: new ol.View({
    center: ol.proj.transform([2.1833, 41.3833], 'EPSG:4326', 'EPSG:3857'),
    zoom: 2
  })
});

এবং প্রশ্নের জন্য: বিজ্ঞপ্তি বহুভুজ কিভাবে তৈরি করবেন? আমি দেখতে পাচ্ছি, দুটি পছন্দ আছে:

  1. কোনওভাবে জিওমকে রূপান্তর করুন ge জুমে বৃত্ত করুন oly পোলিগন, যা আমি করতে পারি না, আমার স্তরের স্তরের ভিত্তিতে

  2. এটি করার জন্য আমার নিজস্ব ফাংশন তৈরি করুন, ওপেনলেয়ার 2 এর মতো কিছু:

    ওপেনলায়ারস.জমিট্রি.পলিগন.ক্রেটরেগুলারপলিগন = ফাংশন (উত্স, ব্যাসার্ধ, পক্ষগুলি, আবর্তন) {
    ভের কোণ = ম্যাথ.পিআই * ((1 / পক্ষ)) ((1/2)); if (ঘূর্ণন) {কোণ + = (ঘূর্ণন / 180) * ম্যাথ.পিআই; } var আবর্তিত আঙ্গুল, এক্স, ওয়াই; var point = []; (var i = 0; i) এর জন্য

তাদের জিআইএস মাস্টার জীবনে কি কেউ একই পয়েন্ট পেয়েছে? কোনটা ভালো? বা এমন কোনও গোপন পথ রয়েছে যা কেবল জ্ঞানী ও শক্তিশালী লোকই দেখতে পাবে? আমাকে দয়া করে সাহায্য!

উত্তর:


13

অন্যরা যেমন সঠিকভাবে উল্লেখ করেছেন, জিওজেএসএন এবং ডব্লিউকেটি ফর্ম্যাটগুলি কোনওভাবেই বিজ্ঞপ্তি জ্যামিতিগুলিকে সমর্থন করে না। চেনাশোনাগুলিও কেএমএল নির্দিষ্টকরণে নেই in কেএমএল, জিওজসন বা ডাব্লু কেটি-তে কোনও মানচিত্রের ফ্রেম লেখার চেষ্টা করার সময় এটি ব্যথার সৃষ্টি করে।

ওপেনলায়ার্স ভি 3 এর বহুভুজের সাহায্যে একটি বৃত্তের আনুমানিক উপায় আছে তবে এটি দুর্দান্ত নয় কারণ এতে দুর্দান্ত বৃত্তের দূরত্বে রূপান্তর জড়িত। ol.geom.Polygon.circularপদ্ধতির জন্য এপিআই রেফারেন্সটি এখানে দেখুন: http://openlayers.org/en/v3.5.0/apidoc/ol.geom.Polygon.html#circular

ol.geom.Polygon.circularপদ্ধতির উদাহরণ নীচে দেখানো হয়েছে, তবে এই ওপেনলায়ারস টিস্যোট ইনডেট্রেক্স উদাহরণেও দেখা যেতে পারে ।

 var lowpoly = ol.geom.Polygon.circular(
  /* WGS84 Sphere */
  new ol.Sphere(6378137),
  circle.getCenter(),
  circle.getRadius(),
  /* Number of verticies */
  12);

বিকল্পভাবে, আপনি ব্যবহার করতে পারেন fromCircleযা, এই পোস্টের সময়ে, পরীক্ষামূলক।

var lowpoly = ol.geom.Polygon.fromCircle(
  circle,
  /* Number of verticies (optional) */
  12,
  /* Start angle (optional) */
  90
);

আপনি যে খেলতে পারেন তার জন্য, এখানে আমার jsFizz দেখুন: https://jsfiddle.net/a1syw4od/9/


আমি কোনও সম্পাদনার প্রস্তাব দিতে পারি, তবে আপনি যদি এটি ঠিক করেন তবে এটি আরও সহজ: শেষ উদাহরণটি ol.geom.Polygon.fromCircle বরং ব্যবহার করা উচিত ol.geom.Polygon.circular। চিয়ার্স!
আরজান

0

আপনি যদি একটি সাধারণ বৃত্তাকার বহুভুজ তৈরি করতে আগ্রহী হন তবে ব্যবহার করুন:

new ol.geom.Circle(
            ol.proj.transform([longitude, latitude], 'EPSG:4326', 'EPSG:3857'),
            radius_meters),
            'XY'
        )

উত্স: http://openlayers.org/en/v3.0.0/apidoc/ol.geom.Circle.html (পৃষ্ঠার শীর্ষে স্থিতিশীল টিকটি অপসারণ করুন)


এটি বৈধ, তবে বর্তমানে যদি আপনি বৈশিষ্ট্যটি জিওজেএসনে রূপান্তর করতে চান এবং চেষ্টা করতে চান তবে বর্তমানে সমস্যা রয়েছে। Github.com/openlayers/ol3/pull/3237#issuecomment-78475413
ড্যারেন রেড

এছাড়াও আপনি যখন ডব্লু কেটি ব্যবহার করে ডাব্লুকেটিতে জ্যামিতিটি বের করার চেষ্টা করবেন।
সুরজ

1
ol.geom.Circleবহুভুজ নয়, এটি ব্যাসার্ধ এবং কেন্দ্র দ্বারা প্রতিনিধিত্ব করা একটি সাধারণ জ্যামিতি। (বেস বর্গ দেখতে ol.geom.Circleহয় ol.geom.SimpleGeometryনা ol.geom.Polygon) GeoJSON, উইকেটরক্ষক এবং KML এ তাদের নির্দেশের মধ্যে বৃত্তাকার জ্যামিতি হবে না এবং বিন্যাস আগে রূপান্তর প্রয়োজন। ol.geom.Circleএকটি সত্য বহুভুজ দ্বারা আনুমানিক একটি উপায় জন্য দয়া করে আমার উত্তর দেখুন ।
নাগেইটেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.