代码之家  ›  专栏  ›  技术社区  ›  Jack

如何使用变量中的位置在谷歌地图上获得一个pin?[已关闭]

  •  0
  • Jack  · 技术社区  · 13 年前

    我想把别针放在我的谷歌地图上,其中有一个包含位置的变量,当我制作这样的别针时,我的别针就可以工作了。

    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,
    

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

    谢谢

    3 回复  |  直到 13 年前
        1
  •  3
  •   rrowland    13 年前

    这个 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,
    
        2
  •  2
  •   Olaf Horstmann    13 年前

    google.maps.LatLng() 需要2个数值,您正试图用字符串初始化它。

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

    location = location.split(',');
    var DriverLatLng = new google.maps.LatLng(parseFloat(location[0]),parseFloat(location[1]));
    ....
    
        3
  •  1
  •   Community Mohan Dere    9 年前

    问题是,您在第二个实例中为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();
    

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