2013-02-15 3 views
0

Я хочу взять корниты из URL-адреса и отправить их на карту google, чтобы установить центр карты в этих координатах. Я установил условие. Если координаты не имеют значения, это работает, но если у него нет карты, она не будет центрировать. Это мой код.установить координаты, если они есть google maps

function getUrlVars() 
      { 
       var vars = [], hash; 
       var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
       for(var i = 0; i < hashes.length; i++) 
       { 
        hash = hashes[i].split('='); 
        vars.push(hash[0]); 
        vars[hash[0]] = hash[1]; 
       } 
       return vars; 
      } 
      var coordenadas = getUrlVars()["coordenadas"]; 


      var map; 
      var infowindow; 
      var geocoder; 

      if (coordenadas){ 

       function init() { 
        alert ("coordenadas "+coordenadas); 
        geocoder = new google.maps.Geocoder(); 
        map = new google.maps.Map(document.getElementById('map_canvas'), { 
         zoom: 5, 
         mapTypeId: google.maps.MapTypeId.ROADMAP, 
         center: new google.maps.LatLng(coordenadas)     
        });    
        infoWindow = new google.maps.InfoWindow(); 
        google.maps.event.addListener(map, 'click', clickedAddress);   

       } 
      } 
      else{ 
       function init() { 
        geocoder = new google.maps.Geocoder(); 
        map = new google.maps.Map(document.getElementById('map_canvas'), { 
         zoom: 5, 
         mapTypeId: google.maps.MapTypeId.ROADMAP, 
         center: new google.maps.LatLng(40.346544, -3.848877)      
        });    
        infoWindow = new google.maps.InfoWindow(); 
        google.maps.event.addListener(map, 'click', clickedAddress);   

       } 
      }; 

Что я плохо делаю?

ответ

0

A google.maps.LatLng принимает в качестве аргумента два числа с плавающей запятой, а не строку, содержащую два числа, разделенные запятой.

var coords=coordenadas.split(','); 

затем

center: new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1])) 

Существует также что-то странное с тем, как вы создаете несколько «INIT» функции внутри «если», что не работает для меня (по крайней мере в IE) , Это делает:

 if (!!coordenadas){ 

      init = function() { 
       alert ("coordenadas "+coordenadas); 
     var coords=coordenadas.split(','); 
       map = new google.maps.Map(document.getElementById('map_canvas'), { 
        zoom: 5, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
      center: new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1])) 
       });    
       infoWindow = new google.maps.InfoWindow(); 
       //google.maps.event.addListener(map, 'click', clickedAddress);   

      } 
     } 
     else{ 
      init = function() { 
       geocoder = new google.maps.Geocoder(); 
       map = new google.maps.Map(document.getElementById('map_canvas'), { 
        zoom: 5, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        center: new google.maps.LatLng(40.346544, -3.848877)      
       });    
       infoWindow = new google.maps.InfoWindow(); 
       // google.maps.event.addListener(map, 'click', clickedAddress);   

      } 
     }; 

Working example

Смежные вопросы