String to latlng和setCenter / marker问题。 [GMaps-API-3]

时间:2012-02-16 21:56:40

标签: google-maps-api-3

我是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 - 将getLocation直接[不带.toString()]返回到setPlace - 没有任何反应。

2 - 当我将从getLocation()WITH toString()返回的值放入stringToLatLng时,它表示长度未定义。也许getLocation没有返回字符串?

2 个答案:

答案 0 :(得分:0)

为什么要转换为字符串?

results[0].geometry.location 

包含地理编码的纬度,经度值作为LatLng对象,而不是格式化的字符串。

这可以用作例如。

res.lat() and res.lng() 

为您提供数据库插入所需的坐标,即

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

答案 1 :(得分:0)

https://developers.google.com/maps/documentation/javascript/reference

toUrlValue(precision?:number)string
返回此LatLng的“lat,lng”形式的字符串。我们默认将lat / lng值舍入到6位小数。