2012-04-29 9 views
7

私は地図をクリックした後に住所と座標を取得する必要があります。私はGoogle map api v3を使用しています。私は入力座標を修復しましたが、地図をクリックしてアドレスを取得する

function initialize() { 
      var myOptions = { 
       center: new google.maps.LatLng(36.835769, 10.247693), 
       zoom: 15, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      var map = new google.maps.Map(document.getElementById("map_canvas"), 
      myOptions); 
      google.maps.event.addListener(map, 'click', function(event) { 
       placeMarker(event.latLng); 
      }); 

      var marker; 
      function placeMarker(location) { 
       if(marker){ //on vérifie si le marqueur existe 
        marker.setPosition(location); //on change sa position 
       }else{ 
        marker = new google.maps.Marker({ //on créé le marqueur 
         position: location, 
         map: map 
        }); 
       } 
       latitude.value=location.lat(); 
       longitude.value=location.lng(); 
      } 

     } 

私はアドレスを取得するには、このPHPスクリプトを使用するが、JavaScriptでそれを使用する方法がわからない場合は? javascriptを使用して住所を取得することはできますか?

<?php 
    $url  = 'http://where.yahooapis.com/geocode?location=40.714224,-73.961452&gflags=R&flags=J'; 
    $response = json_decode(file_get_contents($url)); 
    $location = $response->ResultSet->Results[0]; 
    foreach ((array) $location as $key => $value) { 
      if($key == 'city') 
       $city = $value; 
      if($key == 'country') 
       $country = $value; 
      if($key == 'street') 
       $street = $value; 
    } 
    echo "Street: ".$street."<br>"; 
    echo "City: ".$city; 
    echo "<br/>Country: ".$country; 

    ?> 

答えて

17

ここでは、アドレスを取得する簡単な例を示します。結果は複雑になることがあります(それは配列であり、交差道路、近隣、州、国の任意の組み合わせであることを見てからです)。

私は最初の行を使用しています都市、州、国の組み合わせである結果。ここでは詳細を読む:

https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingResults

デモはここにある:http://jsfiddle.net/eB2RX/1/

私はチュニジアに解像度が、私は意味、非常に良いではありませんアメリカであなたは通りの番号を取得ではなく、気づきました。私はストリートの名前だけを見た。

コードの一部:

var map; 
    var geocoder; 
    var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 2, 
    mapTypeId: google.maps.MapTypeId.ROADMAP }; 

    function initialize() { 
     var myOptions = { 
      center: new google.maps.LatLng(36.835769, 10.247693), 
      zoom: 15, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     geocoder = new google.maps.Geocoder(); 
     var map = new google.maps.Map(document.getElementById("map_canvas"), 
     myOptions); 
     google.maps.event.addListener(map, 'click', function(event) { 
      placeMarker(event.latLng); 
     }); 

     var marker; 
     function placeMarker(location) { 
      if(marker){ //on vérifie si le marqueur existe 
       marker.setPosition(location); //on change sa position 
      }else{ 
       marker = new google.maps.Marker({ //on créé le marqueur 
        position: location, 
        map: map 
       }); 
      } 
      document.getElementById('lat').value=location.lat(); 
      document.getElementById('lng').value=location.lng(); 
      getAddress(location); 
     } 

    function getAddress(latLng) { 
    geocoder.geocode({'latLng': latLng}, 
     function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) { 
      if(results[0]) { 
      document.getElementById("address").value = results[0].formatted_address; 
      } 
      else { 
      document.getElementById("address").value = "No results"; 
      } 
     } 
     else { 
      document.getElementById("address").value = status; 
     } 
     }); 
    } 
    } 
+0

おかげでたくさんの男、それが動作します。) – Houx

+0

どういたしまして! –

+0

お願い、私はフランス語で結果を得て、私は英語でそれらを必要とする。 – Houx

関連する問題