2013-03-09 63 views
1

儘管花了整天的搜索和嘗試無數的代碼方法,但我仍然遇到了嘗試正確居中和縮放谷歌地圖的問題。谷歌地圖v3 - 設置界標到標記中心

我不知道是否有人會那麼善良,以指出我的代碼中我做錯了什麼。在v2中一切正常,但我很難更新到v3。

有關信息 地圖是一個更大的PHP應用程序的一小部分,並且所需要的緯度&長地圖參數已經通過它們在主PROG使用和聲明其他方法如下製得: -

var myDestination=new google.maps.LatLng(e_lat,e_long); 
var myHome=new google.maps.LatLng(h_lat,h_long); 

除了變焦和中心外,一切似乎都可以正常工作。 有問題的代碼如下: -

function initialize() 
{ 

// set the map properties 
var mapProp = { 
    center:myHome, 
    zoom:12, 
    mapTypeId:google.maps.MapTypeId.ROADMAP 
    }; 

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

// set the home marker 
var marker_home=new google.maps.Marker({ 
    position:myHome, 
    icon:'house.png' 
    }); 

    marker_home.setMap(map); 

//set the destination marker 
var marker_destination=new google.maps.Marker({ 
    position:myDestination, 
    icon:'flag_red.png' 
    }); 

    marker_destination.setMap(map); 



//google polyline between the 2 points 
var myPolyline = [myDestination,myHome]; 
var directPath = new google.maps.Polyline({ 
    path:myPolyline, 
    strokeColor:"#0000FF", 
    strokeOpacity:0.8, 
    strokeWeight:2 
}); 

directPath.setMap(map); 


// Make an array of the LatLng's of the markers you want to show 
var LatLngList = array (new google.maps.LatLng (e_lat,e_long), new google.maps.LatLng (h_lat,h_long)); 
// Create a new viewpoint bound 
var bounds = new google.maps.LatLngBounds(); 
// Go through each... 
for (var i = 0, LtLgLen = LatLngList.length; i < LtLgLen; i++) { 
// And increase the bounds to take this point 
bounds.extend (LatLngList[i]); 
} 
// Fit these bounds to the map 
map.fitBounds (bounds); 

} 

google.maps.event.addDomListener(window, 'load', initialize); 

TIA的任何幫助:)

+1

它正在做什麼?你有任何的JavaScript錯誤?既然你只有2點,它應該沒有循環工作。你能提供一個鏈接到一個展現問題的地圖(或創建一個jsfiddle)嗎? – geocodezip 2013-03-09 07:49:07

+0

它似乎顯示確定..只是fitBounds似乎不起作用,因此沒有正確地居中兩點之間。 http://jsfiddle.net/klaw/tQf9n/3/ – klaw 2013-03-09 11:36:49

回答

1

在您的代碼 「陣列」 沒有定義。見jsFiddle

var LatLngList = array (new google.maps.LatLng (e_lat,e_long), new google.maps.LatLng (h_lat,h_long)); 

您應該使用

var LatLngList = new Array(new google.maps.LatLng...) 

var LatLngList = [new google.maps.LatLng...] 
+0

謝謝您回覆我已經取代 VAR LatLngList = [ \t \t \t [新google.maps.LatLng(e_lat,e_long)], \t \t \t [new google.maps.LatLng(h_lat,h_long)] \t \t \t]; 但它仍然表現出相同的行爲,並且仍然沒有約束邊界內的2個點,並且地圖不適合正確的縮放,也不適合居家與目的地之間的中點。 :/ 謝謝您的幫助和建議,到目前爲止.. – klaw 2013-03-09 11:34:57

+0

'VAR LatLngList = [新google.maps.LatLng(e_lat,e_long),新google.maps.LatLng(h_lat,h_long)]' HTTP: //jsfiddle.net/tQf9n/4/ – 2013-03-09 14:06:46

+0

YAY!非常感謝你幫助這樣的n00b。 它對它進行排序,並且它現在完美地居中。 – klaw 2013-03-09 15:52:51