0

我想用一个包含位置的变量将图钉放在我的谷歌地图地图上,当我这样制作时,我的图钉就可以工作了。

var imageDriver = 'marker.png';
var DriverLatLng = new google.maps.LatLng(62.446026, 17.331340);
var driverMarker = new google.maps.Marker({
    position: DriverLatLng,
    map: map,
    icon: imageDriver,

但我想使用这种方法,将纬度和经度存储在一个变量中:

var location = "62.446026, 17.331340";
var imageDriver = 'marker.png';
var DriverLatLng = new google.maps.LatLng(location);
var driverMarker = new google.maps.Marker({
    position: DriverLatLng,
    map: map,
    icon: imageDriver,

当我做第二个片段时,图钉就消失了。这是什么原因造成的?

谢谢

4

3 回答 3

3

google.maps.LatLng()函数不接受字符串参数。它采用以下参数:

lat    : number
lng    : number 
noWrap : boolean // Optional

这记录在这里:https ://developers.google.com/maps/documentation/javascript/reference#LatLng

您可以这样存储纬度和经度:

var location = { 
    lat: 62.446026, 
    lng: 17.331340 
};

var imageDriver = 'marker.png';
var DriverLatLng = new google.maps.LatLng(location.lat, location.lng);
var driverMarker = new google.maps.Marker({
    position: DriverLatLng,
    map: map,
    icon: imageDriver,
于 2013-04-06T17:01:51.240 回答
2

google.maps.LatLng()需要 2 个数值,您正在尝试使用字符串对其进行初始化。

您可以将字符串拆分为一个数组,然后将数组内的两个字符串解析为 float 以获取 long 和 lat 值:

location = location.split(',');
var DriverLatLng = new google.maps.LatLng(parseFloat(location[0]),parseFloat(location[1]));
....
于 2013-04-06T17:00:56.863 回答
1

问题是您在第二个实例中为您的 LatLng 构造函数提供了一个字符串。这是不正确的,并且不起作用 - 这就是您没有看到图钉的原因。在第一种情况下,你给它两个数字,这很好。

您可以在此处查看文档:https

://developers.google.com/maps/documentation/javascript/reference#LatLng 要做您想做的事情,您可以有两个变量(它们是数字):

var locationLat = 62.446026;
var locationLng = 17.331340;
var DriverLatLng = new google.maps.LatLng(locationLat,locationLng);

...或者你可以做他们在这个答案中所做的事情:Convert String to latlng google maps,如果你决定将你的纬度和经度保留在一个字符串中。
...或者,如果您想要一个变量,您可以创建一个新对象并将 latlng 分配给它:
var myLatLng = new Object();
myLatLng.lat = 62.446026;
myLatLng.lng = 17.331340;

...或者,在构建了 google LatLng 对象之后,您可以稍后从中获取 lat 和 lng,如下所示:

var myLatLng = new google.maps.LatLng(62.446026, 17.331340);
// some other stuff here
var myStringLatLng = myLatLng.lat() + ',' + myLatLng.lng();

我想最好的选择取决于你想要做什么!

于 2013-04-06T17:03:24.347 回答