谷歌映射v3阵列标记

Blo*_*ood 0 javascript jquery google-maps google-maps-api-3

我无法在Google Maps V3中显示多个标记,我正确获取坐标但不在地图上显示.控制台也没有错误

  1. map_items [0] =标题
  2. map_items [1] = 55.153766,11.909180
  3. map_items [2] =链接
  4. map_items [3] =文字

如果我发出警报,所有这些都会正确显示.例

"标题","51.00150763193481,-2.5659284999999272","链接","文字"

 function initialize() {
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 7,
                center: new google.maps.LatLng(55.153766, 11.909180),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });
            for (var x = 0; x < temp.length; x++) {
                if(temp[x][1]){
                    var map_items = temp[x];
                    var myLatlng = new google.maps.LatLng(map_items[1]);
                    var marker = new google.maps.Marker({
                        map: map,
                        position: myLatlng,
                        title: map_items[0]
                    });
                    google.maps.event.addListener(marker, 'click', function() {
                        infowindow.setContent('<div class="google_marker"><a href="'+map_items[2]+'">'+map_items[0]+'</a><br /><p>'+map_items[3]+'</p></div>');
                        infowindow.open(map, marker);
                    });
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*elo 7

google.maps.LatLng()接受两个参数,而不是一个,所以:

var latlon = map_items[1].split(',');
var myLatlng = new google.maps.LatLng(parseFloat(latlon[0]), parseFloat(latlon[1]));
Run Code Online (Sandbox Code Playgroud)

事实上,最好使用对象而不是每个项目包含不同数据类型的数组,例如:

marker_data[0] = {
  "lat": 55.153766,
  "lon": 11.909180,
  "title": "My Title",
  "link": "http://stackoverflow.com"
}
//etc...
Run Code Online (Sandbox Code Playgroud)

然后你就像这样访问它:

var myLatlng = new google.maps.LatLng(marker_data[0].lat, marker_data[0].lon);
Run Code Online (Sandbox Code Playgroud)