ওপ্লেলেয়ারগুলিতে স্তর অর্ডার কীভাবে সংজ্ঞায়িত করবেন?


28

আমার কাছে একটি মার্কার স্তর, দুটি ভেক্টর স্তর এবং দুটি রাস্টার স্তর রয়েছে। দুটি রাস্টার স্তর দ্বারা চিহ্নিতকারী স্তরটি কভার হয়ে যায়।

মার্কার স্তরটি সর্বদা উপরে চলে যাওয়ার কোনও উপায় আছে কি?

সম্পাদিত: জেড-ইনডেক্সের ক্রমটি ভেক্টর স্তরটিতে ভাল কাজ করে, তবে আমি যখন কম জেড-ইনডেক্স সহ মানচিত্রে আরেকটি ডাব্লুএমএস রাস্টার স্তর যুক্ত করি তখন রাস্টার স্তরটি এখনও ভেক্টর স্তরটি coversেকে দেয়।

সম্পাদিত: কেউ কি কোনও স্তরটির "লেয়ার ইন্ডেক্স" এবং "জেড-ইনডেক্স" এর শর্তে রেন্ডারিং অর্ডারের পার্থক্যটি চিহ্নিত করতে পারে? আমি মনে করি যে স্তর সূচকটি ওভারলে অর্ডার এবং জিনডেক্স একটি ভেক্টর স্তরের বৈশিষ্ট্য অর্ডার নিয়ে কাজ করে, আমি কি ঠিক আছি?


আমি মনে করি ওপেনলায়ারগুলিতে লেয়ারলিডেক্স এবং জেড-ইনডেক্সগুলি বিনিময়যোগ্য পদ। ডকুমেন্টেশনে এগুলি একই প্রসঙ্গে ব্যবহৃত হয়, যেমন: dev.openlayers.org/relayss/OpenLayers-2.11/doc/apidocs/files/…
কেসি

হ্যালো @ ক্যাসি আমি আপনার উদাহরণটির প্রশংসা করি। যাইহোক, আমি মনে করি না যে স্তর তালিকা এবং জেড-সূচকটি বিনিময়যোগ্য। আমার নিজের অভিজ্ঞতার জন্য setZindex কাজ করে না তবে সেটইন্ডেক্স কাজ করে। আমি লক্ষ্য করেছি যে: ১. ওপেনলায়ারের জেড-ইনডেক্স উদাহরণটি ভেক্টর স্তরের কোনও বৈশিষ্ট্যের জন্য কাজ করে এবং এটি রেন্ডারঅর্ডশনগুলি দ্বারা সক্ষম করা হয়: {zIndexing: true}} ২. রাস্টার ইমেজ স্তরটির জন্য আপনার উদাহরণ থেকে, আপনি স্তরটি রেন্ডার অর্ডারটি মানচিত্র নিয়ন্ত্রণে যা দেখেন তার উপর ভিত্তি করে দেখতে পারেন যা স্তর সূচকের উপর নির্ভর করে (আপনার উত্তর কোড হিসাবে)। ৩. স্তর সূচকটি আমি নতুন স্তরে যুক্ত করা আদেশ অনুসারে সেট করা হয়েছে (ভিত্তিক স্তরটিকে 0 ...) হিসাবে
দেখানো হয়েছে

1. আমি মনে করি আপনি ঠিক বলেছেন। 2 এবং 3. ঠিক আছে, তবে আপনি সেটলেয়ার ইন্ডেক্স পদ্ধতিতে কল করে ডিফল্ট আচরণকে ওভাররাইড করতে পারেন যা কোনও স্তরের জেড-সূচককে সামঞ্জস্য করে। এটি মানচিত্রের নিয়ন্ত্রণের স্তরগুলির ক্রম এবং স্তরগুলির অঙ্কন আদেশকে প্রভাবিত করবে।
কেসি

উত্তর:


24

প্রতিটি স্তরের জন্য জেড-সূচক নির্ধারণে সহায়তা করা উচিত: http://www.openlayers.org/dev/example/ordering.html

সম্পাদিত

আমি যে উদাহরণটির সাথে মূলত লিঙ্ক করেছি তা খুব সহায়ক নয়। আপনি স্তরগুলির স্তর তালিকা / জেড-সূচক সেট করতে চান, স্তরগুলির মধ্যে নির্মাতারা নয় (ক্রম উদাহরণ হিসাবে দেখানো হয়েছে)। আমি কাস্টম লেয়ার ইনডেক্সিং দেখিয়ে একটি উদাহরণ (এই উদাহরণটি ভিত্তিক ) একসাথে রেখেছি । লক্ষ্য করুন যে আপনি যখন কানাডা রাস্টার চালু করেন, তখন মার্কার স্তরটি শীর্ষে থাকে।

এখানে প্রাসঙ্গিক কোড:

map.setLayerIndex(dm_wms, 0); //set the image overlay to the bottom
map.setLayerIndex(markers, 99); //set the marker layer to an arbitrarily high layer index

সেটলেয়ার ইন্ডেক্স কোডের জন্য ডকুমেন্টেশনটি এখানে রয়েছে: http://dev.openlayers.org/relayss/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Map-js.html#OpenLayers.Map.setLayerIndex


উদাহরণটি ম্যালওয়ারের সাথে লিঙ্ক করে।
Bazinga777

8

আপনি এটি করতে পারেন, যদি আপনি চান তবে আপনার ভেক্টর স্তরটি সর্বদা সরল কোডের সাথে শীর্ষে থাকে ...

var vecLyr = map.getLayersByName('VectorLayer')[0];
map.raiseLayer(vecLyr, map.layers.length);

এটা সহজ হতে পারে!


4

উপরের কোনওটিই আমার পক্ষে কাজ করেনি, তবে যখনই আমি একটি নতুন স্তর যুক্ত করি তখনই এটি করা আমার মার্কার স্তরটিকে শীর্ষে রাখার জন্য ট্রিট কাজ করে:

myMarkerLayer.setZIndex (1001);


এটি আমার পক্ষেও একমাত্র উত্তর ছিল answer অন্যদের কেউই কাজ করেনি।
ম্যাথু লক

3

আপনি বিদ্যমানগুলির উপরে একটি নতুন শীট রাখার মতো মানচিত্রে একটি স্তর যুক্ত করার কথা ভাবতে পারেন। নতুন শীটটি স্বচ্ছ না হলে এটি নীচের সমস্তগুলি আড়াল করবে।

দুর্ভাগ্যক্রমে ওপেনলায়ার্সের একটি sertোকানো লেয়ারএট পদ্ধতি নেই, সুতরাং আপনাকে সন্নিবেশের পরে আপনার স্তরগুলি পুনরায় অর্ডার করতে হবে। সমাধানটি হল স্তরটি যুক্ত করা এবং তারপরে এটিকে স্ট্যাকের নিচে থেকে পছন্দসই গভীরতায় সরিয়ে নেওয়া বা আপনি যা চাইলে শীর্ষে ফিরে যান।

আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন:

// add your wms as usual
var yourWMSLayer = new ....
map.addLayer(yourWMSlayer);

// you can do it both ways:
// 1. now move the markers to the top of the stack
var yourMarkers = map.getLayersByName("the marker layer name")[0];
map.setLayerIndex(yourMarkers, map.layers.length-1);

// 2. OR you move the WMS down
// this is more succint
map.setLayerIndex(yourWMSLayer, map.layers.length-2);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.