我是javascript和Google Maps API的新手。我正在尝试创建一组函数,这些函数:
1-以字符串的形式获取和寻址并返回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-将不带.toString()的getLocation直接返回到setPlace中-没有发生任何事情。
2-当我将getLocation()和toString()返回的值放入stringToLatLng中时,它显示长度未定义。也许getLocation没有返回字符串?
发布于 2012-02-17 23:11:38
为什么要转换为字符串?
results[0].geometry.location 包含地理编码的纬度和经度值作为LatLng对象,而不是格式化字符串。
这个可以用例如。
res.lat() and res.lng() 为您提供数据库插入所需的坐标
var mydbUrl = 'mydb.php?lat='+res.lat()+'&lng='+res.lng();发布于 2013-02-27 17:08:51
https://developers.google.com/maps/documentation/javascript/reference
toUrlValue(精度?:数字)字符串
返回此LatLng的"lat,lng“形式的字符串。默认情况下,我们将lat/lng值四舍五入为6位小数。
https://stackoverflow.com/questions/9319690
复制相似问题