জাভা স্ক্রিপ্ট 2 এর জন্য আরকজিআইএস এপিআই ব্যবহার করে একাধিক আর্কজিআইএস সার্ভার দৃষ্টান্তগুলি থেকে স্তরগুলি সনাক্ত করা?


14

এটি জাভাস্ক্রিপ্ট এপিআই 2.4 সহ আর্কজিআইএস সার্ভার 9.3-এ প্রযোজ্য।

আমার লক্ষ্য মানচিত্রে ক্লিক করা এবং সমস্ত দৃশ্যমান ডায়নামিক স্তরগুলিতে সনাক্তকরণ টাস্কটি চালানো।

IdentifyTask সঙ্গে কিছুকাল থেকে বিশ্রাম শেষবিন্দু করা জন্য একটি URL প্রয়োজন IdentifyParameters উল্লেখ যা layerIds চিহ্নিত অপারেশন সম্পাদনা করা যেতে উচিত নয়।

দেখে মনে হচ্ছে সনাক্তকরণ সরঞ্জামটি আশা করছে যে সমস্ত স্তর একই REST শেষ পয়েন্ট (যেমন, একই আর্কজিআইএস সার্ভার) থেকে অ্যাক্সেসযোগ্য হবে।

আমার ক্ষেত্রে, একাধিক আরকজিআইএস সার্ভার উদাহরণ থেকে স্তরগুলি পরিবেশন করা হচ্ছে - সনাক্তকারী সরঞ্জাম কীভাবে এটি সমর্থন করতে পারে? উদাহরণস্বরূপ, যদি এই মানচিত্রে বিল্ডিংস এবং পার্সেল স্তরগুলি পৃথক আর্কজিআইএস সার্ভার থেকে আসে।

(এটি আমার আগের প্রশ্নের সাথে সম্পর্কিত , তবে আমি বুঝতে পেরেছি যে আমাকে প্রথমে এই প্রশ্নের উত্তর দেওয়া দরকার)


এই ধারণাগুলির কোনও আপডেট হয়েছে? আমি উপরে উল্লিখিত ফিডল নমুনা ব্যবহার করছি। ধন্যবাদ
ফেজ

@ ফেজ যতদূর আমি জানি আরকিজিআইএস সার্ভার 10 এবং জেএস এপিআই 2.6 ব্যবহার করে ধারণাগুলি এখনও একইরকম, ধরে নিচ্ছেন আপনি যা বোঝাতে চেয়েছেন তা
স্টিফেন লিড

উত্তর:


11

প্রথমত, একাধিক সনাক্তকরণ কার্য প্রক্রিয়াকরণের জন্য ডিফ্রেডলিস্ট ব্যবহার করার ধারণাটি দেখানোর জন্য এখানে সরলিকৃত জাভাস্ক্রিপ্ট এপিআই উদাহরণ রয়েছে:

//Assume that map is your map object
var idTask1, idTask2, idParams = new esri.tasks.IdentifyParameters();
var url1 = "<server1 url>", var url2 = "<server2 url>";
dojo.connect(map, "onLoad", initIdentifies);
function initIdentifies(map) { //map.onLoad passes in the map object
    idTask1 = new esri.tasks.IdentifyTask(url1);
    idTask2 = new esri.tasks.IdentifyTask(url2);
    //A few sample constant parameters. Set more or less as you need
    idParams.tolerance = 12;
    idParams.returnGeometry = true;
    idParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
    dojo.connect(map, "onClick", runIdentifies);
}
function runIdentifies(evt) {
    var defTask1 = new dojo.Deferred(), defTask2 = new dojo.Deferred;
    var dlTasks = new dojo.DeferredList([defTask1, defTask2]);
    dlTasks.then(showResults); //defTasks will fire after defTask1 and defTask2 have completed
    //These parameters change with each request
    idParams.width = map.width;
    idParams.height = map.height;
    idParams.geometry = evt.mapPoint;
    idParams.mapExtent = map.extent;
    try {
        idTask1.execute(idParams, defTask1.callback, defTask1.errback); //Pass the response into the callback on defTask1
    } catch (e) {
        console.log("Error caught");
        console.log(e);
        defTask1.errback(e); //If you get an error, execute the errback
    }
    try {
        idTask2.execute(idParams, defTask2.callback, defTask2.errback); //Pass the response into the callback on defTask2
    } catch (e) {
        console.log("Error caught");
        console.log(e);
        defTask2.errback(e); //If you get an error, execute the errback
    }
}
function showResults(r) {
    //The format of 'r' is [[Boolean task 1 success, [task 1 results]],[Boolean task 2 success, [task 2 results]]]
    //using the array 'r', build and show your infoWindow as normal
}

তারপরে এখানে জেএসফিডেলের একটি উদাহরণ যা আমি মনে করি আপনি যা চান তা করে, মানচিত্রে সমস্ত দৃশ্যমান গতিশীল মানচিত্র স্তরগুলিতে সমস্ত দৃশ্যমান স্তর ব্যবহার করে চালানো হয়।

http://jsfiddle.net/blordcastillo/mULcz/

সমস্ত টাইপগুলি এখন ঠিক করা হয়েছে :)

মূল ধারণাটি হ'ল যখনই মানচিত্রটি ক্লিক করা হয় বা দৃশ্যমানতা টগল করা হয় তখন সনাক্তটি পুনরায় চালু করা হয়। শনাক্তকরণটি চালিত হলে, বহিষ্কারকৃত পরিচয় কার্যের সংখ্যাটি দৃশ্যমান স্তরগুলির সংখ্যার উপর নির্ভর করে এবং সমস্ত স্তর তার ফলাফলগুলি প্রদর্শন করতে ফিরে না আসা পর্যন্ত এটি অপেক্ষা করে।


এটি অনেক অর্থবহ করে - নমুনা কোড পোস্ট করার জন্য আপনাকে অনেক ধন্যবাদ
স্টিফেন লিড

2
আপনার কোডে বেশ কয়েকটি ছোট ছোট টাইপ রয়েছে - যা প্রকৃতপক্ষে আরও চিত্তাকর্ষক কারণ এটি বোঝায় যে আপনি এটিকে মেমরি থেকে টাইপ করেছেন এবং এটি চালানোর দরকারও নেই। হাট!
স্টিফেন লিড

হ্যাঁ, আমি কেবল আমার মাথার উপরের অংশটি টাইপ করেছি :) আমাকে জানাবেন যে গৌণ টাইপগুলি কী এবং আমি সেগুলি ঠিক করব।
blord-castillo

জেএসফিডেলের একটি কার্যকরী সংস্করণে পরিবর্তন হয়েছে। সংস্করণ পুরোপুরি দক্ষ নয়; আদর্শভাবে আমি আমার ক্যোয়ারির ফলাফলগুলি সংরক্ষণ করব এবং শনাক্তকরণ বিন্দুতে দৃশ্যমানতা টগল করা না হলে শো ফলাফলগুলি বিভাগটি আবার করব। তবে, আমি মনে করি এটি কার্যকরভাবে কার্যকর করা শনাক্তকরণগুলির সাথে টগলিংয়ের সাথে কীভাবে দৃশ্যমানতা বেঁধে রাখা যায় সে সম্পর্কে ধারণাটি ভালভাবে দেখায়। এছাড়াও, আপনি প্রতিটি স্তরের সাথে একটি টেম্পলেট সংরক্ষণ করতে চান যাতে আপনি জাভাস্ক্রিপ্ট ফাংশনগুলির মধ্যে যুক্তির মতো যুক্তি ব্যবহার না করে স্তরগুলি থেকে টেমপ্লেটগুলি টানতে পারেন।
blord-castillo

4

শনাক্তকরণ কার্যটি কেবল একটি মানচিত্র পরিষেবা উল্লেখ করতে পারে, তাই আপনাকে উভয়কেই তা করতে হবে:

  • আপনার পরিচয় চালাতে ইচ্ছুক সমস্ত স্তর একটি মানচিত্র পরিষেবাতে রাখুন
  • প্রতি মানচিত্রে ক্লিক করে একাধিক আইডেন্টিফাই টাস্ক চালান

আমি কোনও অ্যাপ্লিকেশানের সাথে একইরকম পরিস্থিতিতে পড়েছিলাম যেখানে আমি কোনও ডিইএম মানচিত্র পরিষেবা এবং কোনও ভূ-প্রসেসিংয়ের কাজ থেকে সমুদ্র স্তরের উত্থানের ফলাফল মানচিত্র পরিষেবাটিতে সনাক্ত করতে সক্ষম হতে চেয়েছিলাম। আমি দুটি আইডিনিটিফাস্ক চালানো বেছে নিয়েছি। উভয় টাস্ক সম্পন্ন হওয়ার পরে আপনাকে সত্যিই যুক্ত করতে হবে fig

মূল প্রবাহটি হ'ল (এটি সিলভারলাইট / সি ব্যবহার করছিল)

  • ডিইএম এবং এসএলআর সনাক্তকারী টাস্ক কমপ্লিটের জন্য বুলিয়ান ভেরিয়েবল সেটআপ করুন
  • ডেমের জন্য আইডিনিটিফিট টাস্ক চালান
  • মিথ্যাতে DEmmittedfy টাস্ক কমপ্লিটের জন্য বিল সেট করুন
  • এসএলআরের জন্য আইডিনিটিফিট টাস্ক চালান (ডিইএম হিসাবে একই সাধারণ পরামিতি ব্যবহার করে)
  • এসএলআরএনটিফাই টাস্ক কমপ্লিটকে মিথ্যা হিসাবে সেট করুন
  • DEMIdentifyTask_Execute কমপ্লিটড ইভেন্ট শ্রোতার মধ্যে, আমি DEMphanfyTask কমপ্লিটকে সত্য হিসাবে সেট করেছিলাম এবং তারপরে এসএলআর্টিফাইটি টাস্ক কমপ্লিট সত্য কিনা তা পরীক্ষা করে দেখুন (এসএলআরডিটিফাইটি টাস্ক_এক্সেকিউট কমপ্লিটের বিপরীতে সেট আপ করুন)
  • যে কোনও টাস্ক শেষ হয়েছে, উভয়ই বিল সত্য হবে এবং আইডেন্টিটি টাস্কস কমপ্লিট কল করে যা উভয় ফলাফলকে একটি কাস্টম গ্রাফিক অবজেক্টে ভাগ করে দেয় যা আমি মানচিত্রে যুক্ত করেছি, তারপরে slr এবং demphanftytaskcomplete কে মিথ্যা হিসাবে সেট করব

ধন্যবাদ - এটাই আমি ভয় পেয়েছিলাম তবে আপনি এটি কার্যক্ষম বলে মনে করেছেন তা শুনে ভাল লাগল। যদি এই সাইটটি উপলভ্য থাকে তবে আপনি দয়া করে আমাকে ইউআরএলটি জানান?
স্টিফেন লিড

এটি সর্বজনীন নয় এবং এটি সিলভারলাইটে রয়েছে। শুভকামনা!
wwnick

একাধিক চিহ্নিত কাজের জন্য +1। জাভাস্ক্রিপ্ট এপিআই-এর জন্য, আপনি এগুলি dojo.DeferredList দিয়ে পরিচালনা করতে পারেন (একাধিক ক্যোয়ারি টাস্কেও প্রযোজ্য)।
ডেরেক সুইংলে

1

আমি এই দৃশ্যটি স্থগিত তালিকার সাথে পুনরায় তৈরি করেছি, তবে ছদ্মবেশী অংশটি কেবলমাত্র স্তরগুলিতে চিহ্নিত ছিল যা স্কেল রয়েছে। এই সংস্করণ 3.2 jsapi জন্য http://www.spatialexception.org/posts/arcgis-javascript-identifytask-returns-scale-dependent-layers


@ ওয়াসোমো, এই সমাধানটির সরাসরি লিঙ্ক দেখার কোনও সুযোগ?
রিপসিন

সরঞ্জামদণ্ডের উপরের ডানদিকে একটি আইকন সনাক্তকারী
ম্যাপসভার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.