繁体   English   中英

Google Maps-创建多个标记

[英]Google Maps - Creating multiple markers

我在尝试使用存储在数组中的信息将多个标记循环到地图上时遇到了一些麻烦。

代码可以创建地图,没问题,但是没有显示我要圈出的标记...

从下面的代码中可以看到,有两个函数正在创建标记。 首先是简单地使用两个值。 此标记显示正常。

但是,第二个功能是从数组中获取数据(已将数组设置为将“经纬度”数据按此顺序“压缩”在一起,就像Google Maps要求的那样)并且在运行时不显示任何内容。

有任何想法吗? 我很沮丧!

提前致谢!

这是代码:

初始“位置”数组:

var locations = new Array();

for (var i = 0; i < data.length; i++)
        {
        var row = data[i];   

        var longitude = row[0];
        var latitude = row[1];

        locations[i] = latitude + longitude;
        }

callMap(locations, locationFilename, userLatitude, userLongitude);

Google Maps功能

    function callMap(locations, locationFilename, userLatitude, userLongitude) {

 var mapOptions = {
      zoom:16,
      center: new google.maps.LatLng(userLatitude, userLongitude),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById('mapView'),mapOptions);

    setMarkers(map, locations, locationFilename);
    currentPosition(map, userLatitude, userLongitude);
  }

  function currentPosition(map, userLatitude, userLongitude)
  {

  var userLatLng = new google.maps.LatLng(userLatitude, userLongitude);

    var marker = new google.maps.Marker({
        position: userLatLng,
        map: map
            });

  }

  function setMarkers(map, locations, locationFilename) {

    for (var i = 0; i < locations.length; i++) {

    var markerLatLng = new google.maps.LatLng(locations[i]);

            var marker = new google.maps.Marker({
                position: markerLatLng,
                map: map
                    });

    }
  }

google.maps.LatLng使用两个数字作为参数。

这是不正确的:

var markerLatLng = new google.maps.LatLng(locations[i]);

这应该工作:

for (var i = 0; i < data.length; i++)
    {
    var row = data[i];   

    var longitude = row[0];
    var latitude = row[1];

    locations[i] = new google.maps.LatLng(latitude,longitude);
    }

然后

function setMarkers(map, locations, locationFilename) {

  for (var i = 0; i < locations.length; i++) {

    var markerLatLng = locations[i];

        var marker = new google.maps.Marker({
            position: markerLatLng,
            map: map
        });

    }
  }
}

您只是将字符串加在一起,它必须是一个数组:

for (var i = 0; i < data.length; i++) {
    var row = data[i];

    var longitude = row[0];
    var latitude = row[1];

    locations[i] = [latitude, longitude];
}

var markerLatLng = new google.maps.LatLng(locations[i].join(','));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM