我正在使用谷歌地图API,它通过隐藏的文本框获取lat。今天它表现得很奇怪,它在地图上显示错误的位置,但是如果我为lat和long变量手动编写lat long,那么效果很好。
HTML:
<input type="hidden" name="ads-lat" id="ads-lat" value="35.68969456776873">
<input type="hidden" name="ads-long" id="ads-long" value="51.46769173739062">
不工作:
var long = document.getElementById("ads-long").value;
var lat = document.getElementById("ads-lat").value;
工作良好:
var long = 51.46769173739062;
var lat = 35.68969456776873;
Google代码:
map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: +lat,
lng: +long
},
zoom: 15,
streetViewControl: false,
styles : styles,
fullscreenControl: true
});
我不知道它为什么会这样,控制台中没有错误,我也检查了两个不同的浏览器,它不是缓存。正如你所看到的那样,当我手动编写lat和long时,它会工作,它是一种数字/小数,对吧?假设它从输入中获取值作为字符串,但我在变量之前写了一个加号+
,我再说一遍,谷歌的not a number
没有错误。有什么想法吗?
它显示在俄罗斯的某个地方(我认为),但它错了,它应该显示在伊朗的某个地方,你可以在this网站上查看lat。
答案 0 :(得分:1)
这是怎么回事?
http://jsfiddle.net/f09bteov/19/
我做了两件事:
1)将parseInt
更改为parseFloat
(你得到每度35,51 ...... ~170km面积的纬度/经度,所以稍微偏离),
2)纠正他们的命令,并且
3)删除了+
声明中的lat: +lat, lng: +long
。不知道为什么他们在那里。