2012-04-03 25 views
9

से देश, क्षेत्र और शहर का नाम प्राप्त करें मैं PHP के साथ Google मानचित्र API (V3?) पर देशांतर, अक्षांश और अक्षांश से देश, क्षेत्र और शहर का नाम प्राप्त करना चाहता हूं। मैं बस इसे हर काउंटी के लिए प्राप्त नहीं कर सकता, मैं इस कोड को प्राप्त करने में कामयाब रहा लेकिन यह अन्य काउंटी पर काम नहीं करता है क्योंकि लौटा हुआ परिणाम अलग है (केवल सही जानकारी देश है लेकिन यहां तक ​​कि स्थानीय नाम में भी वापस नहीं किया जाता है अंग्रेजी नाम):Google मानचित्र - देशांतर, अक्षांश और अक्षांश (PHP)

<? 
    $lok1 = $_REQUEST['lok1']; 
    $lok2 = $_REQUEST['lok2']; 

    $url = 'http://maps.google.com/maps/geo?q='.$lok2.','.$lok1.'&output=json'; 
    $data = @file_get_contents($url); 
    $jsondata = json_decode($data,true); 

    if(is_array($jsondata)&& $jsondata ['Status']['code']==200) 
    { 
      $addr = $jsondata ['Placemark'][0]['AddressDetails']['Country']['CountryName']; 
      $addr2 = $jsondata ['Placemark'][0]['AddressDetails']['Country']['Locality']['LocalityName']; 
      $addr3 = $jsondata ['Placemark'][0]['AddressDetails']['Country']['Locality']['DependentLocality']['DependentLocalityName']; 
    } 
    echo "Country: " . $addr . " | Region: " . $addr2 . " | City: " . $addr3; 
?> 

यह अच्छा काम करता है अपने देश से सही डेटा प्राप्त करने के लिए, लेकिन दूसरों के लिए नहीं ...

+0

कौन सा निर्देशांक आपके लिए काम नहीं कर रहे हैं? – cloakedninjas

+0

यह मेरे लिए पूरी तरह से काम करता है। हालांकि मेरा आवेदन केवल भारत में इसका उपयोग कर रहा है। – srbhbarot

+0

आपको अपने द्वारा किए गए निर्देशांक के बारे में अधिक जानकारी प्रदान करनी चाहिए। – srbhbarot

उत्तर

23

आप इस तरह दूसरी एपीआई (थॉमस ने सुझाव दिया है) का उपयोग कर सकते हैं:

$geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng=48.283273,14.295041&sensor=false'); 

     $output= json_decode($geocode); 

echo $output->results[0]->formatted_address; 

इस प्रयास करें ..

संपादित करें :::::

$geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng=48.283273,14.295041&sensor=false'); 

     $output= json_decode($geocode); 

    for($j=0;$j<count($output->results[0]->address_components);$j++){ 
       echo '<b>'.$output->results[0]->address_components[$j]->types[0].': </b> '.$output->results[0]->address_components[$j]->long_name.'<br/>'; 
      } 
+0

यह काम करता है, लेकिन डेटा वह नहीं है जिसकी मुझे आवश्यकता है। खैर, मैं यहां से देश और क्षेत्र (लेकिन क्षेत्र में पोस्ट नंबर भी शामिल हो सकता है) प्राप्त कर सकता हूं, लेकिन शहर-केवल पता नहीं मिल सकता है। मैं देश, शहर/गांव का नाम और क्षेत्र (ज़िप संख्या के बिना) कैसे प्राप्त कर सकता हूं। –

+0

मेरे संपादित उत्तर की जांच करें – srbhbarot

+0

यह है, बहुत बहुत धन्यवाद। सही उत्तर के रूप में चिह्नित किया गया। धन्यवाद। –

1

आप अपने जियोकोडिंग एपीआई का उपयोग कर की कोशिश की?

https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding

उदाहरण: http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

संपादित करें: मैं भारत को लक्षित कई क्षुधा में यह प्रयोग किया जाता है और यह बहुत अच्छी तरह से काम किया है।

+0

क्या आप PHP से उस देश, शहर और क्षेत्र को पाने में मेरी सहायता कर सकते हैं? –

5
<?php 
$deal_lat=30.469301; 
$deal_long=70.969324; 
$geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$deal_lat.','.$deal_long.'&sensor=false'); 

     $output= json_decode($geocode); 

    for($j=0;$j<count($output->results[0]->address_components);$j++){ 
       $cn=array($output->results[0]->address_components[$j]->types[0]); 
      if(in_array("country", $cn)) 
      { 
      $country= $output->results[0]->address_components[$j]->long_name; 
      } 
      } 
      echo $country; 
?> 
+0

यदि आपको ज़िप कोड ढूंढने की आवश्यकता है तो replin_array ("country", $ cn) अगर आपको शहर का नाम ढूंढना है तो in_array ("country", $ cn) को in_array ("locality", $ cn) में बदलें। in_array ("postal_code", $ cn) –

6

यहाँ है समस्या के लिए मेरा दृष्टिकोण

$lat = "22.719569"; 
$lng = "75.857726"; 
$data = file_get_contents("http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lng&sensor=false"); 
$data = json_decode($data); 
$add_array = $data->results; 
$add_array = $add_array[0]; 
$add_array = $add_array->address_components; 
$country = "Not found"; 
$state = "Not found"; 
$city = "Not found"; 
foreach ($add_array as $key) { 
    if($key->types[0] == 'administrative_area_level_2') 
    { 
    $city = $key->long_name; 
    } 
    if($key->types[0] == 'administrative_area_level_1') 
    { 
    $state = $key->long_name; 
    } 
    if($key->types[0] == 'country') 
    { 
    $country = $key->long_name; 
    } 
} 
echo "Country : ".$country." ,State : ".$state." ,City : ".$city; 
संबंधित मुद्दे