2009-05-28 7 views
15

कहें कि मेरे पास एक वेब सेवा API है जो पैरामीटर के रूप में एक ज़िपकोड स्वीकार करता है, लेकिन मेरे पास केवल एक जीपीएस समन्वय (अक्षांश, देशांतर) तक पहुंच है। मैं गतिशील रूप से ज़िप कोड को कैसे देख सकता हूं जो समन्वय से संबंधित है?एक जीपीएस समन्वय से एक ज़िप कोड कैसे देखें?

मैं इस काम को आईफोन पर कर रहा हूं, इसलिए उम्मीद है कि कोरलोकेशन एपीआई के भीतर ऐसा करने का एक आसान तरीका है जिसे मैं प्रलेखन में देख रहा हूं।

+0

मैं तुम्हें CoreLocation में मिल जाएगा शक है, लेकिन यह एक कोशिश के लायक है ... यह देखने के लिए दिलचस्प होगा अगर यह – hhafez

उत्तर

6

यदि मैं आप थे तो मैं 3.0 एसडीके में रिवर्स जियोकोडर के लिए दस्तावेज़ों को देखने का प्रयास करूंगा।मैं यह नहीं कह सकता कि वहां क्या है, लेकिन आप कह सकते हैं कि रिवर्स जियोकोड एक जगह देता है मार्क, और फिर यदि आप उस जगह को देखते हैं तो एसडीके में मार्क, आपको लगता है कि इसमें एक पोस्टकोड संपत्ति है। कौन जानता है?

+0

यदि हम MapKit Framework का जिक्र कर रहे हैं, तो ध्यान रखें कि यह Google मानचित्र API का उपयोग करता है और इसके लिए आपको Google TOS का पालन करने की आवश्यकता होती है – jottos

0

इस तरह के लुकअप को "रिवर्स जिओलोकेशन" कहा जाता है।

पहली बात करने की ज़रूरत डिग्री CLocation वस्तु से अक्षांश/एलएनजी डेटा परिवर्तित है ...

locationManager समारोह में

(जो एक बार आप कोई स्थान अपडेट प्राप्त कहा जाता है) ....

कोड:

[lat stringWithFormat:@"%+.6f", myLocation.coordinate.latitude]; 
[lng stringWithFormat:@"%+.6f", myLocation.coordinate.longitude]; 

वहां से आप की तरह "GeoNames.org" या गूगल मैप्स एपीआई बैकएंड वेब सेवा करने के लिए अक्षांश और एलएनजी तार भेज ... और आप निकटतम शहर या सड़क का पता प्राप्त कर सकते हैं।

0

अमेरिकी जनगणना - टाइगर डेटाबेस द्वारा उत्पादित एक डेटाबेस है। मेरा मानना ​​है कि लेट/लांग दिए गए ज़िप कोड को देखने की संभावना है।

यदि आप Tiger zipcode खोजते हैं तो मुझे शर्त होगी कि आपको कुछ मिल सकता है। उदाहरण के लिए here देखें। ऐसा लगता है कि सीपीएएन पर एक पर्ल मॉड्यूल है जो ऐसा करता है, इसलिए यह असंभव नहीं होना चाहिए।

15

यह पृष्ठ यूएस में अपने अक्षांश और देशांतर के साथ, सभी ज़िप कोडों के डेटाबेस (सीएसवी में) प्रदान करता है। http://zips.sourceforge.net/

फ़ाइल 500k अनपॅक है। यहां डेटा की पहली कुछ पंक्तियां दी गई हैं:

"35004", "AL", " 33.606379", " -86.50249", "Moody", "Alabama" 
"35005", "AL", " 33.592585", " -86.95969", "Adamsville", "Alabama" 
"35006", "AL", " 33.451714", " -87.23957", "Adger", "Alabama" 

इस डेटा को स्थानीय डेटाबेस में डंप करें। निकटतम बिंदु खोजने के लिए अपने निर्देशांक और डेटाबेस में से किसी की तुलना करने के लिए हावर्सिन फॉर्मूला का उपयोग करें। कोरलोकेशन में एक फ़ंक्शन मिलता है, जिसमें से आप भी इसका उपयोग कर सकते हैं।

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

इस पृष्ठ में सी में एक हावरसिन फ़ंक्शन है और ज़िप डेटाबेस के बारे में जानकारी है।

http://www.jaimerios.com/?p=39

संपादित करें: उसके बारे में यहां काफी दूर की गणना के बारे में गूगल से स्पष्टीकरण। यह MySQL और PHP का उपयोग करता है, लेकिन निकटतम बिंदु खोजने के लिए एसक्यूएल भी उपयोगी है। यह GetDistanceFrom फ़ंक्शन के बजाय एसक्यूएल का उपयोग करके क्वेरी करने के लिए शायद तेज़ होगा।

http://code.google.com/support/bin/answer.py?answer=87134&topic=11364

निकटतम 20 स्थानों है कि 37 करने के लिए 25 मील की दूरी के दायरे में हैं का पता लगाएं, -122 समन्वय:

SELECT id, (3959 * acos(cos(radians(37)) 
* cos(radians(lat)) * cos(radians(lng) - radians(-122)) 
+ sin(radians(37)) * sin(radians(lat)))) 
AS distance FROM markers HAVING distance < 25 
ORDER BY distance LIMIT 0 , 20; 

मील के बजाय किलोमीटर की दूरी से खोजने के लिए, 6371 के साथ 3959 की जगह।

+0

है यह केवल आप के निकटतम केंद्र से दूरी दे देंगे एक ज़िप कोड क्षेत्र, यह आपको नहीं बताएगा कि ओपी अनुरोध के रूप में समन्वय वास्तव में कौन सा ज़िप कोड है। – user4815162342

+0

मैंने इसे डाउनवॉइड किया क्योंकि ज़िपकोड जोड़े जाते हैं और हर महीने हटा दिए जाते हैं। यदि आप ज़िपकोड लुकअप सटीकता के बारे में गंभीर हैं, तो आपको ज़िप कोड डेटा के लिए सदस्यता खरीदना चाहिए, और हर कुछ महीनों में अपने डेटा सेट को ताज़ा करना चाहिए। आपकी क्यूए प्रक्रिया में विशेष रूप से यह नोट करना शामिल होना चाहिए कि कौन से ज़िपकोड * हटाए जा रहे हैं *, क्योंकि आप उन डेटा को बदलने के लिए संबंधित डेटा अपडेट करना चाहते हैं जो हटाए जा रहे हैं। –

0

Google एक निःशुल्क रिवर्स-जियोकोडिंग सेवा प्रदान करता है। आप इसे सीधे उपयोग कर सकते हैं, या टेम्पबो एसडीके आज़माएं जो उद्देश्य सी (कोड नमूने के साथ) सहित कई भाषाओं में सुविधाजनक पहुंच प्रदान करता है।

चेक बाहर https://www.temboo.com/library/Library/Google/Geocoding/GeocodeByCoordinates/