2012-03-26 86 views
5

一直在努力整个谷歌地图从文本链接设置锅。它看起来像地图本身的id没有被传递给函数,但我尝试了许多没有喜悦的东西。谷歌地图平移到

<script type="text/javascript"> 
    var home = new google.maps.LatLng(4.915833, 10.195313); 
    function initialize() { 
     var myOptions = { 
      zoom: 2, 
      center: home, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      mapTypeControl: false, 
      panControl: true, 
      panControlOptions: { 
       position: google.maps.ControlPosition.LEFT_CENTER 
      }, 
      zoomControl: true, 
      zoomControlOptions: { 
       style: google.maps.ZoomControlStyle.LARGE, 
       position: google.maps.ControlPosition.LEFT_CENTER 
      }, 
      scaleControl: false, 
      streetViewControl: true, 
      streetViewControlOptions: { 
       position: google.maps.ControlPosition.LEFT_CENTER 
      } 
     } 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     setMarkers(map, destinations); 
     clickroute(map); 
    } 
    var destinations = [ 
     ['Marbella', 36.509937, -4.886352], 
     ['Algarve', 37.016945, -7.928728], 
     ['London', 51.508129, -0.128005], 
     ['Istanbul', 41.00527, 28.97696], 
     ['Whistler', 50.116168, -122.959423] 
    ]; 
    function setMarkers(map, locations) { 
     var image = new google.maps.MarkerImage('img/marker.png', 
     new google.maps.Size(41, 63), 
     new google.maps.Point(0,0)); 
     for (var i = 0; i < locations.length; i++) { 
      var destination = locations[i]; 
      var myLatLng = new google.maps.LatLng(destination[1], destination[2]); 
      var marker = new google.maps.Marker({ 
       position: myLatLng, 
       map: map, 
       icon: image, 
       title: destination[0] 
      }); 
     } 
    } 
    function clickroute(lati, long) { 
     var latLng = new google.maps.LatLng(51.433373, -0.712251); 
     map.panTo(latLng); 
    } 
</script> 

<li onclick="clickroute()">test</li> 

什么可能会导致问题的任何可能的想法?我得到

Uncaught TypeError: Object #<HTMLDivElement> has no method 'panTo' 

感谢JS错误

理查德

回答

11

@onemach是正确的。

1. 您必须声明map作为JavaScript开头的全局变量。只需在<script type="text/javascript">标签后立即做出var map;声明。

2. 而在同一时间您的地图初始化应改为

map = new google.maps.Map(document.getElementById("map"), myOptions); // without the 'var' 

3.您打电话的<li>clickroute()的onClick不带参数。因此,改变clickroute()这样的定义:

function clickroute() { //just omit the 'lati' and 'long' 
    var latLng = new google.maps.LatLng(51.433373, -0.712251); 
    map.panTo(latLng); 
} 

现在点击test<li>您的地图上会移到点(51.433373,-0.712251)

2

clickroute(map);是你想要的定义

function clickroute(lati, long) { 
    var latLng = new google.maps.LatLng(51.433373, -0.712251); 
    map.panTo(latLng); 
} 

我猜它不兼容

function clickroute(map) { 
    var latLng = new google.maps.LatLng(51.433373, -0.712251); 
    map.panTo(latLng); 
} 

更新:

我很困惑你到底想要什么。

onclick=clickroute()不传递任何参数给函数。

也没有全球map在clickroute。

+0

感谢您抽出时间来回答,与仍然没有喜悦和相同的错误:( – user989952 2012-03-26 15:41:27