2012-03-26 22 views
5

Cały dzień zmagał się z ustawianiem patelni w mapach google z linku tekstowego. Wygląda na to, że id samej mapy nie jest przekazywany do funkcji, ale próbowałem wielu rzeczy bez radości.map google patcha do

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

Jakieś ewentualne pomysły na temat tego, co może spowodować problem? I pojawia się błąd js z

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

Dzięki

Richard

Odpowiedz

11

@onemach jest poprawna.

1. Musisz zadeklarować map jako zmienną globalną na początku javascript. Po prostu wykonaj deklarację var map; natychmiast po tagu <script type="text/javascript">.

2. I w tym samym czasie swoją inicjalizacji mapa powinna zostać zmieniona na

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

3. swoje powołanie clickroute() OnClick <li> bez parametrów. Więc zmienić definicję clickroute() takiego:

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

Teraz klikając na test<li> mapy przeniesie się do punktu (51.433373, -0,712251)

2

clickroute(map); jest niezgodna z definicją

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

I zgadnijcie co chcesz go

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

AKTUALIZACJA:

Jestem zdezorientowany, czego dokładnie chcesz.

nie przekazuje żadnych argumentów do funkcji.

Również nie ma globalnego map w kliknięciu.

+0

dzięki za poświęcenie czasu, aby odpowiedzieć, nadal nie ma radości z tym i ten sam błąd :( – user989952