2011-11-11 11 views
0

住所のそれぞれの値latLngを見つけてマップの中心に使用するプログラムを作成しようとしています。ここまでは私のコードですが、主な問題はジオコーダーから戻ってくる値を得ることです。ジオコーダーを使用してアドレスをGoogleマップの中心に設定する

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Geocoding Demo</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 700px; height: 700px"></div> 

    <script type="text/javascript"> 

    var mapOptions = { 
     mapTypeId: google.maps.MapTypeId.TERRAIN, 
     center: new google.maps.LatLng(54.00, -3.00), 
     zoom: 4 
    }; 


    var geocoder = new google.maps.Geocoder(); 

    var address = '3410 Dr Martin Luther King Jr Blvd, New Bern, NC, US'; 


    geocoder.geocode({'address': address}, function(results, status) { 
              if(status == google.maps.GeocoderStatus.OK) 
              { 
               var bounds = new google.maps.LatLngBounds(); 
               document.write(bounds.extend(results[0].geometry.location)); 
               map.fitBounds(bounds); 
               new google.maps.Marker(
              { 
               position:results[0].geometry.location, 
               map: map 
              } 
              ); 

             } 

             } 
        ); 

var map = new google.maps.Map(document.getElementById("map"), mapOptions); 
    </script> 
</body> 
</html> 

答えて

1

Googleマップオブジェクトの境界線を設定したいとします。 LatLngBounds

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(results[0].geometry.location); 
map.fitBounds(bounds); 

詳細optionalyあなたはmap.fitBounds(bounds.getCenter())あなたがLatLngBounds

+0

ありがとうございます、これは魅力的でした。ソリューションを反映するようにコードを更新します。 – davelupt

1

に複数のlatlngを持っている場合は、新しい緯度経度を地図上setCenter()を呼び出したいを行うことができます。私はあなたがこれをしようとする前にマップを作成します。

<script type="text/javascript"> 
    var geocoder = new google.maps.Geocoder(); 

    var address = '3410 Dr Martin Luther King Jr Blvd, New Bern, NC, US'; 

    var mapOptions = { 
      mapTypeId: google.maps.MapTypeId.TERRAIN, 
      center: new google.maps.LatLng(54.00, -3.00), 
      zoom: 5 
    }; 

    var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

    geocoder.geocode({'address': address}, function(results, status) { 
      if(status == google.maps.GeocoderStatus.OK) 
      { 
       result = results[0].geometry.location; 
       console.log(result); 

       map.setCenter(result); 
      } 
    }); 
    </script> 
+0

このソリューションを試してみると、前と同じマップが提供されました。これは、マップがmap.setCenter()メソッドで再描画されないことが原因です。 – davelupt

+0

ジオコーダーが機能しなかった可能性があります。 setCenterはマップセンターを再描画する必要があります。あなたの「結果」はコンソールに書き込まれましたか? – duncan

+0

いいえ、私はまだ実際にコンソールに書き込むことができませんでした。 – davelupt

関連する問題