2012-03-26 45 views
5

Bạn đang gặp khó khăn cả ngày với việc đặt chảo vào bản đồ google từ liên kết văn bản. Có vẻ như id của bản thân bản đồ không được chuyển cho hàm nhưng tôi đã thử một số thứ không có niềm vui.google maps pan to

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

Mọi ý tưởng có thể có về nguyên nhân có thể gây ra sự cố? Tôi nhận được một lỗi js với

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

Cảm ơn

Richard

Trả lời

11

@onemach là chính xác.

1. Bạn phải khai báo map dưới dạng biến toàn cầu ở đầu javascript. Chỉ cần thực hiện khai báo var map; ngay sau thẻ <script type="text/javascript">.

2. Và đồng thời khởi tạo bản đồ của bạn nên được thay đổi để

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

3. gọi điện của bạn clickroute() onClick của <li> không có tham số. Vì vậy, thay đổi định nghĩa của clickroute() như thế này:

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

Bây giờ nhấp vào test<li> bản đồ của bạn sẽ di chuyển đến điểm (51,433373, -0,712251)

2

clickroute(map); là không phù hợp với định nghĩa

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

Tôi đoán những gì bạn muốn nó

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

CẬP NHẬT:

Tôi nhầm lẫn chính xác bạn muốn gì.

onclick=clickroute() không chuyển bất kỳ đối số nào cho hàm.

Cũng không có toàn cầu map trong chế độ nhấp chuột.

+0

cảm ơn đã dành thời gian để trả lời, vẫn không có niềm vui với điều đó và lỗi tương tự :( – user989952