2012-04-17 10 views
5

मेरे पास सटीक पते (सड़क, संख्या, शहर, क्षेत्र/क्षेत्र, देश) वाला डेटाबेस है। हालांकि, मैं सोच रहा था कि अगर हम न्यूयॉर्क में हैं तो शहर के जिले (जैसे "मैनहट्टन") प्राप्त करने के लिए Google API का उपयोग करने का कोई तरीका था?जियो कोडिंग पता - एक निश्चित पते का जिला प्राप्त करें (Google API)

सभी अन्य जानकारी मैं पहले से ही डेटाबेस में है, इसलिए यदि वहाँ एक (बेशक यह केवल बड़े शहरों में हो जाएगा) है मैं सिर्फ जिले की आवश्यकता होगी ...

अद्यतन:

मुझे यह फ़ंक्शन http://www.techques.com/question/1-3151450/Google-geolocation-API---Use-longitude-and-latitude-to-get-address पर मिला और formatted_address को उत्थान के लिए बदलने की कोशिश की (यहां तक ​​कि शॉर्ट_नाम इत्यादि जैसे अन्य लोग) लेकिन यह कुछ भी वापस नहीं करता है ... किसी भी मदद की अत्यधिक सराहना की जाएगी! धन्यवाद!!

function reverse_geocode($lat, $lon) { 
    $url = "http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false"; 
    $data = json_decode(file_get_contents($url)); 
    if (!isset($data->results[0]->formatted_address)){ 
     return "unknown Place"; 
    } 
    return $data->results[0]->formatted_address; 
} 

उत्तर

5

आप इस तरह उप-क्षेत्र का उपयोग कर सकते हैं:

function reverse_geocode($lat, $lon) { 
    $url = "http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false"; 
    $data = json_decode(file_get_contents($url)); 
    if (!isset($data->results[0]->address_components)){ 
     return "unknown Place"; 
    } 

    if ($data->results[0]->address_components[2]->types[0]=="sublocality") { 

     $return_array['type']="sublocality"; 
     $return_array['sublocality_long_name']=$data->results[0]->address_components[2]->long_name; 
     $return_array['sublocality_short_name']=$data->results[0]->address_components[2]->short_name; 

     return $return_array; 
     } 

} 
+0

thx, यह वही है जो मैं देख रहा था ... – Helmut

3

आप एक geocode-अनुरोध के अंदर इस बारे में जानकारी मिलेगी, जब वहाँ के लिए

[ "sublocality", "political" ] 

उदाहरण types सेट के साथ एक परिणाम मौजूद है: 317 Madison Ave,New York City


समारोह का संशोधन प्रतिक्रिया-घटकों की आसान पहुंच के लिए उपरोक्त:

/** 
    * @param $a mixed latitude or address 
    * @param $b mixed optional longitude when $a is latitude 
    * @return object geocoding-data 
    **/ 

    function geocode($a, $b=null) { 
    $params=array('sensor'=>'false'); 
    if(is_null($b)) 
    { 
     $params['address']=$a; 
    } 
    else 
    { 
     $params['latlng']=implode(',',array($a,$b)); 
    } 
    $url = 'http://maps.google.com/maps/api/geocode/json?'.http_build_query($params,'','&'); 
    [email protected]_get_contents($url); 

    $response=new StdClass; 
    $response->street_address    = null; 
    $response->route      = null; 
    $response->country      = null; 
    $response->administrative_area_level_1 = null; 
    $response->administrative_area_level_2 = null; 
    $response->administrative_area_level_3 = null; 
    $response->locality     = null; 
    $response->sublocality     = null; 
    $response->neighborhood    = null; 
    $response->postal_code     = null; 
    $response->formatted_address   = null; 
    $response->latitude     = null; 
    $response->longitude     = null; 
    $response->status      = 'ERROR'; 

    if($result) 
    { 
     $json=json_decode($result); 
     $response->status=$json->status; 
     if($response->status=='OK') 
     { 
     $response->formatted_address=$json->results[0]->formatted_address; 
     $response->latitude=$json->results[0]->geometry->location->lat; 
     $response->longitude=$json->results[0]->geometry->location->lng; 

     foreach($json->results[0]->address_components as $value) 
     { 
      if(array_key_exists($value->types[0],$response)) 
      { 
      $response->{$value->types[0]}=$value->long_name; 
      } 
     } 
     } 
    } 
    return $response; 
} 

//sample usage 
echo '<hr/>'.geocode('317 Madison Ave,New York City')->sublocality; 
    //Manhattan 

echo '<hr/>'.geocode('foobar')->status; 
    //ZERO_RESULTS 

echo '<hr/>'.geocode('40.689758, -74.04513800000001')->formatted_address; 
    //1 Liberty Is, Brooklyn, NY 11231, USA 
+0

अपने anser और आपकी मदद के लिए आप डॉ Molle धन्यवाद! मुझे यह फ़ंक्शन मिला (मेरा पोस्ट अपडेट देखें), लेकिन अगर मैं बस किसी भी चीज़ पर formatted_address को बदलता हूं, तो यह "अज्ञात पता" देता है ... क्या आपको कोई फर्क नहीं पड़ता कि इस फ़ंक्शन के साथ केवल उत्थान कैसे प्राप्त करें? – Helmut

+0

ने प्रतिक्रिया के एकल घटकों की आसान पहुंच के लिए एक संशोधित फ़ंक्शन जोड़ा। –

0

मैं निम्नलिखित के साथ आया था।

function geocode() { 
 
    var geocoder = new google.maps.Geocoder(); 
 
    var lat = $('#latitude').val() 
 
    var lng = $('#longitude').val() 
 
    var latlng = {lat: parseFloat(lat), lng: parseFloat(lng)}; 
 

 
    geocoder.geocode(
 
    {'location': latlng}, 
 
    function(results, status) { 
 
     if (status === 'OK') { 
 
     for (var i = 0; i < results[0].address_components.length; i++) 
 
     { 
 
      if (status == google.maps.GeocoderStatus.OK) { 
 
    \t \t \t \t if (results[0]) { 
 
    \t \t \t \t \t for (var i = 0; i < results.length; i++) { 
 
       //alert(results[i].types[0]+','+results[i].types[1]+','+results[i].address_components[0].long_name) 
 
       //district 
 
       if (results[i].types[0]=='political' && results[i].types[1]=='sublocality'){ 
 
        alert(results[i].address_components[0].long_name); 
 
       } 
 
       //City 
 
       if (results[i].types[0]=='locality' && results[i].types[1]=='political'){ 
 
        alert(results[i].address_components[0].long_name); 
 
       } 
 
       //country 
 
       if (results[i].types[0]=='country' && results[i].types[1]=='political'){ 
 
        alert(results[i].address_components[0].long_name); 
 
       } 
 
    \t \t \t \t \t } 
 
    \t \t \t \t } 
 
    \t \t \t \t else {console.log("No reverse geocode results.")} 
 
    \t \t \t } 
 
    \t \t \t else {console.log("Geocoder failed: " + status)} 
 

 

 
     } 
 
    }}) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

फ़ंक्शन latlng() { var geocoder = new google.maps.Geocoder(); var पता = 'Lindwurmstraße, म्यूनिख, जर्मनी' // $ ('# स्थान')। वैल() geocoder.geocode ({'पता': पता}, फ़ंक्शन (परिणाम, स्थिति) { अगर (स्थिति == google.maps.GeocoderStatus.OK) { var अक्षांश = परिणाम [0] .geometry.location.lat(); var देशांतर = परिणाम [0] .geometry.location.lng(); $ ('# अक्षांश ')। वैल (अक्षांश) $ (' # रेखांश ')। वैल (रेखांश) जियोकोड() } }); } // अंत –

+0

इस टिप्पणी का क्या अर्थ होना चाहिए? –

संबंधित मुद्दे