গুগল সিভিক্স এপিআই হ'ল সেরা সমাধান। একটি একক এআইপি হিট আপনাকে নির্বাচিত কর্মকর্তা এবং জেলা উভয়ই করে।
আপনি জিপিএস কোর্ডের মাধ্যমে জেলা (ল্যাট / এলএনজি) পেতে পারেন:
public async Task<GoogleCivicsResult> FetchAndParseUSDistrictAsync(
decimal lat, decimal lng, string address = null)
{
string googleApiKey = App.GoogleApiKey;
string reqAddr = Uri.EscapeDataString(address ?? lat + "," + lng);
string url = "https://www.googleapis.com/civicinfo/v2/representatives?alt=json&key={0}&address={1}";
url = String.Format(url, googleApiKey, reqAddr);
var req = new HttpWebRequestAsync(url);
var data = await req.GetStringAsync();
var result = JsonConvert.DeserializeObject<GoogleCivicsResult>(data);
return result;
}
public class GoogleCivicsResult
{
public Address normalizedInput { get; set; }
public Dictionary<string, Division> divisions { get; set; }
public Office[] offices { get; set; }
public Official[] officials { get; set; }
}
public class Address
{
public string line1 { get; set; }
public string line2 { get; set; }
public string city { get; set; }
public string state { get; set; }
public string zip { get; set; }
}
public class Division
{
public string name { get; set; }
public int[] officeIndices { get; set; }
public Office[] offices { get; set; }
}
public class Office
{
// President of the United States
// United States Senate
// United States House of Representatives FL-06
// Governor
// Lieutenant Governor
// Attorney General
// Sheriff
// County Judge
// Council Chair
public string name { get; set; }
// ocd-division/country:us/state:fl/cd:6
// ocd-division/country:us/state:fl
// ocd-division/country:us/state:fl/county:volusia
public string divisionId { get; set; }
// administrativeArea1
public string[] levels { get; set; }
// legislatorUpperBody
// legislatorLowerBody
// headOfGovernment
// deputyHeadOfGovernment
public string[] roles { get; set; }
public int[] officialIndices { get; set; }
}
public class Official
{
public string name { get; set; }
public Address[] address { get; set; }
public string party { get; set; }
public string[] phones { get; set; }
public string[] urls { get; set; }
public string photoUrl { get; set; }
public Social[] channels { get; set; }
public string[] emails { get; set; }
}
public class Social
{
public string type { get; set; }
public string id { get; set; }
}
https://developers.google.com/civic-information/docs/v2/representatives/representativeInfoByAddress
আপনি ওপেনস্টেটস ব্যবহার করে রাজ্য-স্তরের তথ্যের জন্য অনুরূপ পেতে পারেন :
"http://openstates.org/api/v1/legislators/geo/?apikey={0}&lat={1}&long={2}";
গুগল সিভিক্স এপিআই সম্পর্কে অ্যাডেন্ডা প্রায়শই ডাউন ডাউন হয়
গুগল সিভিক্স এপিআই ল্যাট / এলএনজি সমর্থন করে কিনা তা সম্পর্কে অস্পষ্ট এবং প্রতি কয়েকমাস বা তার কয়েক মাস বা এক মাসের জন্য এটি কেবল ল্যাট / এলএনজি সমর্থন বন্ধ করে দেবে, যতক্ষণ না কেউ এটি এবং গুগল বিজ্ঞপ্তি প্রকাশ করে, বা আরও নির্দিষ্টভাবে, একজন কর্মচারী সেখানে সম্ভবত তাদের স্বেচ্ছাসেবক সময় নোটিশ ("চেলান") এ এটি নিয়ে কাজ করছে এবং এটি ঠিক করার জন্য নজর রাখছে:
https://groups.google.com/d/msg/google-civicinfo-api/0td48h7JxYA/Zhij3yQiCgAJ
যদি আপনার পরিষেবাটি সিভিক্স এপিআই ডেটাটি ক্র্যাশ হয়ে যাওয়ার প্রত্যাশা করে এবং যদি এটির জন্য সিভিকস এপিআই ডেটা দরকারী হয় তবে এটি ক্রাশ নাও হতে পারে তবে এটি একসাথে কয়েক মাস ধরে অকেজো হয়ে যাবে। সবচেয়ে সাম্প্রতিক ব্যর্থতা ছিল 2018 এর বেশিরভাগ রাজ্যের পুরো ভোটগ্রহণের সময়কাল, তাই, এটি বেশ ডাউনটাইম।
আপনি সুস্পষ্টভাবে জিওকোডিংয়ের বিপরীতে প্রতিরক্ষা খেলতে পারেন:
if (!(navigator && navigator.geolocation))
return geoFail();
navigator.geolocation.getCurrentPosition(function (position) {
var coords = position.coords;
var lat = coords.latitude;
var lng = coords.longitude;
if (!lat || !lng)
return geoFail();
var geocoder = new google.maps.Geocoder;
geocoder.geocode({ 'location': { lat: lat, lng: lng } },
function (r, status) {
if (status !== 'OK' || !r || !r.length) {
loadReps(lat, lng);
return;
}
var address = r[0].formatted_address;
$('#address').val(address);
loadReps(lat, lng, address);
});
}, geoFail);
সুতরাং এখানে আমরা ব্যবহারকারীর অবস্থানের জন্য সাধারণ HTML5 জিজ্ঞাসা করি এবং তারা যদি না / ব্লক করে তবে আমরা তাদের "আপনার অবস্থানটি পেলাম না" বার্তাটি (জিওফাইলে সহ) দেখাই। তারপরে আমরা ল্যাব / এলএনজি পেয়েছি, তবে, গুগল সিভিকস এপিআই ত্রুটিযুক্ত তাই আমরা গুগলকে স্পষ্টভাবে ঠিকানাটির জন্য জিজ্ঞাসা করব। এটি r [0]। ফর্ম্যাটড_এড্রেস হিসাবে ফিরে আসে, যা কিছু উত্তরে গুগল আপনাকে ব্যবহারকারীদের যে অবস্থানটি সন্ধান করছে তা নিশ্চিত করার জন্য আপনাকে সেগুলি দেখানোর পরামর্শ দেয়। সুতরাং আমরা এটিকে ঠিকানা পাঠ্যবক্সে রেখেছি এবং এটি দিয়ে পাঠিয়ে দেব loadReps(lat, lng, address)
।
নোট করুন যে এটি সম্ভব জিওকোড কলটি ব্যর্থ হতে পারে (একটি ফ্ল্যাঙ্ক ইন্টারনেট সংযোগের কারণে সহ), তবে, কখনও কখনও গুগল সিভিকস এপিআই পুরোপুরি কার্যকর হয়, সুতরাং এই পরিস্থিতিতে এখনও ব্যবহারকারীকে কোনও ফলাফল অস্বীকার করার প্রয়োজন নেই; আমি এক্ষেত্রে যে ব্যাকএন্ডে লিখেছি তা ল্যাট / এলএনজি এবং alচ্ছিক ঠিকানা গ্রহণ করতে পারে এবং ঠিকানাটি অনুপস্থিত সহ্য করতে পারে। তারপরে এটি গুগল সিভিক্স এপিআইয়ের সাথে কথা বলার চেষ্টা করে এবং যদি এটি কিছুই না পায় তবে তার পক্ষে বাঁচতে হবে এবং ব্যবহারকারীকে নাগরিক এপিআই ভাঙ্গা বলা দরকার, দুঃখিত।
.তিহাসিক উত্তর
সানলাইট ফাউন্ডেশন * এর কংগ্রেস এপিআই কেবল ফেডারেল-কেবল কোনও রাজ্য-স্তর নয়, যদি তা আপনার পক্ষে গুরুত্বপূর্ণ। এবং [সানলাইট ফাউন্ডেশন বন্ধ হয়ে যাচ্ছে, কারণ তারা গভট্র্যাকের প্রচেষ্টাটিকে নকল করতে চায় না।
গভঃ ট্র্যাকের এপিআই * আরও সম্পূর্ণ। এগুলি /role
আপনার প্রশ্নের নিকটতম:
https://www.govtrack.us/developers/api#endpoint_role
এটি আপনাকে সমস্ত বর্তমান সিনেটর এবং হাউজ সদস্যদের এবং তাদের পরবর্তী নির্বাচন কখন হবে তা জানায়। সুতরাং আপনার একটি ফিল্টারিং বোঝা লাগবে।
রাজ্য-স্তরের সামগ্রীর জন্য আপনি ওপেনস্টেটস.আর্গ.এই চান:
http://openstates.org/api/v1/legilators/geo/?apikey= {0} & lat = {1} & দীর্ঘ = {2
https://openstates.org/
* খারাপ খবর, সব সময় বন্ধ হয়ে যায়। গনট্র্যাকের কাজের সদৃশ এড়াতে সানলাইট ফাউন্ডেশন তাদের এপিআই বন্ধ করে দেয় । প্রোপাব্লিকানার কাজের সদৃশতা এড়াতে গভট্র্যাক এখন তাদের বন্ধ করে দিচ্ছে। তবে প্রোপাব্লিক্সগুলি আপনাকে কোনও অবস্থান থেকে জেলা দেবে বলে মনে হচ্ছে না:
https://projects.propublica.org/api-docs/congress-api/
সুতরাং অপেক্ষা করুন আপনি বলবেন, এটি কোনও অর্থবোধ করে না, কারণ এনপাইমাইজস শাটডাউন প্রতিনিধিত্ব প্রকল্প থেকে প্রোপাব্লিকানার প্রতিনিধিত্বকারী সাইটটি আপনাকে একটি ঠিকানা তৈরি করতে দেয় এবং জেলা জিপিএস কর্ডগুলি থেকে জেলা পেতে দেয়। এবং তারা সেই পৃষ্ঠা থেকে তাদের API এ লিঙ্ক করে link আপনাকে বোকা বানিয়েছে, কারণ এই পৃষ্ঠাটি তাদের এপিআই ব্যবহার করে না। আসলে এটি সানলাইট ফাউন্ডেশনের জেলা সন্ধানকারী এপিআই ব্যবহার করে।
কী এলোমেলো.