अद्यतन के लिए धन्यवाद: -
लूप को गूगल मैप्स एपीआई का उपयोग कर सभी उपलब्ध कस्बों के माध्यम से मैं एक अधिक विस्तृत ऐसे ब्लॉग पोस्ट को इस खास विषय से संबंधित http://www.mullie.eu/geographic-searches/
पर लिखा था अपने अक्षांश & देशांतर प्राप्त करें। इन्हें कहीं भी (डेटाबेस) सहेजें। - सावधान रहें, Google बड़ी संख्या में कॉल स्वीकार नहीं करेगा, इसलिए आपकी कॉल को थ्रॉटल करें।
- खुद डेटाबेस: ऊपर कोड के बारे में
public static function getNearby($lat, $lng, $type = 'cities', $limit = 50, $distance = 50, $unit = 'km')
{
// radius of earth; @note: the earth is not perfectly spherical, but this is considered the 'mean radius'
if ($unit == 'km') $radius = 6371.009; // in kilometers
elseif ($unit == 'mi') $radius = 3958.761; // in miles
// latitude boundaries
$maxLat = (float) $lat + rad2deg($distance/$radius);
$minLat = (float) $lat - rad2deg($distance/$radius);
// longitude boundaries (longitude gets smaller when latitude increases)
$maxLng = (float) $lng + rad2deg($distance/$radius/cos(deg2rad((float) $lat)));
$minLng = (float) $lng - rad2deg($distance/$radius/cos(deg2rad((float) $lat)));
// get results ordered by distance (approx)
$nearby = (array) FrontendDB::getDB()->retrieve('SELECT *
FROM table
WHERE lat > ? AND lat < ? AND lng > ? AND lng < ?
ORDER BY ABS(lat - ?) + ABS(lng - ?) ASC
LIMIT ?;',
array($minLat, $maxLat, $minLng, $maxLng, (float) $lat, (float) $lng, (int) $limit));
return $nearby;
}
नोट्स:
तब, जब एक शहर को लाते समय, आप समान कोड नीचे दिए गए कोड को शहरों के लिए एक निश्चित सीमा के भीतर हड़पने के लिए उपयोग कर सकते हैं आवरण का इस्तेमाल किया है, तो mysql_query, पीडीओ को बदलना है, ...
- यह सही नहीं होगा। हम डीबी में सही गोलाकार गणना नहीं कर सकते, तो हम ऊपरी & कम अक्षांश & देशांतर सीमा लिया है। यह मूल रूप से मतलब है कि एक स्थान जो थोड़ा अपनी दूरी से आगे है (जैसे, दूर उत्तर-पूर्व में सिर्फ वास्तविक त्रिज्या का (जो वास्तव में काफी एक चक्र) है बाहर, लेकिन अभी भी अधिकतम अक्षांश अंदर & देशांतर में (क्योंकि हम तुलना यह डेटाबेस में सीमा वर्ग) ऐसा करने पर आपके त्रिज्या के भीतर शहरों में से एक मोटा लेकिन अखरोट 100% सही चयन दे देंगे
मैं इस उदाहरण देकर स्पष्ट करने की कोशिश करेंगे:।। ऊपर
_________________
| /\ |
| Y/ \ |
|/ \ |
|( X )|
| \ /|
| \ / |
|______\_/______|
सर्कल (कुछ हद तक) वास्तविक त्रिज्या है जहां आप स्थान एक्स के आधार पर स्थानों को ढूंढना चाहते हैं। यह आपके डीबी से सीधे पूरा करना बहुत मुश्किल है, तो हम वास्तव में डीबी से क्या प्राप्त करते हैं आसपास के वर्ग है। आप देख सकते हैं, यह संभव है कि स्थानों (वाई) की तरह, इन अधिकतम & मिनट सीमाओं के भीतर गिर हालांकि वे वास्तव में अनुरोध किया त्रिज्या के भीतर नहीं हैं। हालांकि बाद में PHP के माध्यम से फ़िल्टर किया जा सकता है।
यह पिछले मुद्दे, आप पाश सकता है सभी परिणाम से निपटने के लिए और दोनों अपने मूल स्थान के बीच सटीक दूरी की गणना, और पाया करीब मैचों में गणना करने के लिए यदि वे आपके के दायरे में वास्तव में कर रहे हैं। के लिए, आप इस कोड का उपयोग कर सकते हैं:
public static function getDistance($lat1, $lng1, $lat2, $lng2, $unit = 'km')
{
// radius of earth; @note: the earth is not perfectly spherical, but this is considered the 'mean radius'
if ($unit == 'km') $radius = 6371.009; // in kilometers
elseif ($unit == 'mi') $radius = 3958.761; // in miles
// convert degrees to radians
$lat1 = deg2rad((float) $lat1);
$lng1 = deg2rad((float) $lng1);
$lat2 = deg2rad((float) $lat2);
$lng2 = deg2rad((float) $lng2);
// great circle distance formula
return $radius * acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($lng1 - $lng2));
}
यह (अर्ध) की गणना करेगा स्थान एक्स और वाई स्थान के बीच सटीक दूरी, और फिर आप वास्तव में उन शहरों कि काफी निकट थे फ़िल्टर कर सकते हैं किसी न किसी डाटाबेस पारित करने के लिए -फैच, लेकिन वास्तव में आपके सीमाओं के भीतर वास्तव में पर्याप्त नहीं है।
यहां कुछ आशाजनक प्रश्नोत्तरी हैं: http://stackoverflow.com/search?q=radius+search+google+maps+php - उनमें से किसने आपने जांच की है और उन्होंने आपकी समस्या को हल करने में आपकी सहायता क्यों नहीं की? – Gordon
मैं उन लोगों के माध्यम से देखता हूं, मैंने अपना प्रश्न टाइप करते समय सुझाए गए पदों पर ध्यान दिया लेकिन बहुत उपयोगी सामग्री नहीं देखी। क्या आप जानते हैं कि रॉयल मेल के भुगतान के बिना मुझे यूके पोस्टकोड डेटाबेस कहां मिल सकता है? मैंने एक लेख देखा जो विकीलेक्स ने इसे जारी किया लेकिन यह 200 9 में था, इसलिए मुझे लगता है कि यह पूरी तरह अद्यतित नहीं है –
कोई विचार नहीं, क्षमा करें। एक त्वरित Google ने https://www.ordnancesurvey.co.uk/opendatadownload/products.html लाया लेकिन मुझे यकीन नहीं है कि ये उपयोग करने के लिए स्वतंत्र हैं या सहायक हैं। – Gordon