2011-11-11 69 views
0

我正在嘗試編寫一個程序,該程序可爲地址查找相應的latLng值,然後將其用於地圖中心。這是我的代碼到目前爲止,但我遇到的主要問題是從地理編碼器獲取返回的值。使用地理編碼器使地址成爲谷歌地圖的中心

<!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

你想設置谷歌地圖對象的邊界。在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

你想用新的經緯度信息在地圖上調用setCenter()以上的latlng。在嘗試這樣做之前,我還會創建地圖。

<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