首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串到latlng和setCenter/marker问题。[GMaps API-3]

字符串到latlng和setCenter/marker问题。[GMaps API-3]
EN

Stack Overflow用户
提问于 2012-02-17 05:56:40
回答 2查看 2.8K关注 0票数 0

我是javascript和Google Maps API的新手。我正在尝试创建一组函数,这些函数:

1-以字符串的形式获取和寻址并返回latlng,这样我就可以将其存储在数据库中以供以后使用

2-从数据库或直接从函数1获取字符串,以集中地图并设置标记。

以下是我到目前为止所取得的进展:

代码语言:javascript
复制
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没有返回字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 23:11:38

为什么要转换为字符串?

代码语言:javascript
复制
results[0].geometry.location 

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

这个可以用例如。

代码语言:javascript
复制
res.lat() and res.lng() 

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

代码语言:javascript
复制
var mydbUrl = 'mydb.php?lat='+res.lat()+'&lng='+res.lng();
票数 0
EN

Stack Overflow用户

发布于 2013-02-27 17:08:51

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

toUrlValue(精度?:数字)字符串

返回此LatLng的"lat,lng“形式的字符串。默认情况下,我们将lat/lng值四舍五入为6位小数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9319690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档