2012-02-16 4 views
0

Я новичок в JavaScript и API Карт Google. Я пытаюсь создать набор функций, которые:String to latlng и setCenter/marker проблемы. [GMaps-API-3]

1-Get и адрес и вернуть LatLng в виде строки, так что я могу хранить в базе данных для последующего использования

2-Получить строку из базы данных или непосредственно от функции 1, чтобы централизовать карту и установить маркер.

Вот прогресс я сделал до сих пор:

var map; 
var geocode; 
function initializeMap(lat, lng){ 
var eventLatlng=new google.maps.LatLng(lat, lng); 
var mapOptions={ 
zoom: 13, 
center: eventLatlng, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
} 

function getLocation(){ 
var address = document.getElementById("address").value; 
geocoder = new google.maps.Geocoder(); 
geocoder.geocode({'address':address}, function(results,status){ 
    if(status == google.maps.GeocoderStatus.OK){ 
     var res = results[0].geometry.location; 
     return res.toString(); 
    }else{ 
     alert("Geocoding failed:"+status) 
    } 
}); 
} 

function setPlace(codeString){ 
var laln = stringToLatLng(codeString); 
map.setCenter(laln); 
var marker = new google.maps.Marker({map: map, position:laln}); 
} 

function doAll(){ 
var test = getLocation(); 
setPlace(test); 
} 


function stringToLatLng(rcv){ 
var input = rcv.substring(1, rcv.length-1); 
var latlngStr = input.split(",",2); 
alert(latlngStr); 
var lat = parseFloat(latlngStr[0]); 
var lng = parseFloat(latlngStr[1]); 
latlngArray[i] = new google.maps.LatLng(lat, lng); 
return latlngArray[i]; 
} 

Значительная часть этого кода была взята из официального учебника и даже Stackoverflow. InitialiuzeMap отлично работает. getLocation() также подходит для работы. Вероятно, проблема связана с setPlace() и/или stringToLatLng().

То, что я уже пробовал:

1-Return getLocation непосредственно [без .ToString()] в setPlace - ничего не произошло.

2-Когда я вернул значение из метода getLocation() WITH toString() в stringToLatLng, он говорит, что длина не определена. Может быть, getLocation не возвращает строку?

ответ

0

Почему вы конвертируете в строку?

results[0].geometry.location 

содержит геокодированную широту, долгота как объект LatLng, а не как отформатированную строку.

Это может использоваться, например.

res.lat() and res.lng() 

дать вам координаты требуются для вставки базы данных т.е.

var mydbUrl = 'mydb.php?lat='+res.lat()+'&lng='+res.lng(); 
+0

Спасибо, он работает сейчас – illichosky