javascript - 将重叠标记 Spiderfier 与 Google map v3 集成后不显示任何标记

标签 javascript mongodb google-maps pug markerspiderfier

目前正在尝试将重叠标记 Spiderfier 插件集成到 Google map 设置中。我正在将位置数据从 MongoDB 传递到 Jade 模板。

在使用该附加组件之前,我使用 for 循环从坐标数组中创建标记。这些已按预期显示。

但是,当我集成Spiderfier代码时,标记不再添加到 map 上。 map 仍会显示,但 JavaScript 控制台返回未捕获的引用错误 - OverlappingMarkerSpiderfier 未定义消息。这是否意味着对附加组件的调用不正确?我完全准备好接受我错过了一些明显的事情,但到目前为止已尝试以下方法但无济于事:

  • 将我的代码与可用的附加示例进行比较
  • 将我的代码与其他答案进行比较

以下是有关 Google map 的代码:

script(src="http://maps.googleapis.com/maps/api/js?key=AIzaSyASXfB-y1pwF_S-qToDhYL7doiHrUFOx0Q&sensor=false")
script(src"http://jawj.github.io/OverlappingMarkerSpiderfier/bin/oms.min.js")

script.
    var locationArray = [];
each tweetlocations, i in locationlist
    script.
        var latitude = "#{tweetlocations.latitude}";
        var longitude = "#{tweetlocations.longitude}";

        var markerlocation = new google.maps.LatLng(latitude,longitude);
        locationArray.push(markerlocation);

script.
    function initialize()
    {

        var mapProp = {
            center:markerlocation,
            zoom:1,
            mapTypeId:google.maps.MapTypeId.ROADMAP
        };

        var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
        var iw = new google.maps.InfoWindow();
        var oms = new OverlappingMarkerSpiderfier(map,{markersWontMove: true, markersWontHide: true});

        var usualColor = 'eebb22';
        var spiderfiedColor = 'ffee22';
        var iconWithColor = function(color) {
            return 'http://chart.googleapis.com/chart?chst=d_map_xpin_letter&chld=pin|+|' + color + '|000000|ffff00';
        }
        var shadow = new google.maps.MarkerImage('https://www.google.com/intl/en_ALL/mapfiles/shadow50.png',
            new google.maps.Size(37, 34),
            new google.maps.Point(0, 0),
            new google.maps.Point(10, 34)
        );

        oms.addListener('click', function(marker, event) {
            iw.open(map, marker);
        });

        oms.addListener('spiderfy', function(markers) {
            for(var i = 0; i < markers.length; i ++) {
                markers[i].setIcon(iconWithColor(spiderfiedColor));
                markers[i].setShadow(null);
            } 
            iw.close();
        });

        oms.addListener('unspiderfy', function(markers) {
            for(var i = 0; i < markers.length; i ++) {
                markers[i].setIcon(iconWithColor(usualColor));
                markers[i].setShadow(shadow);
            }
        });

        var bounds = new google.maps.LatLngBounds();
        var coord;
        for (coord in locationArray) {
            bounds.extend(coord);
            var marker = new google.maps.Marker({
                position: locationArray[coord],
                map: map,
                icon: iconWithColor(usualColor),
                shadow: shadow
            });
            oms.addMarker(marker);
        }
    }

    google.maps.event.addDomListener(window, 'load', initialize);

最佳答案

看起来您在第二个 script() 函数中犯了一个小拼写错误,缺少 src 和 url 之间的 = 符号。因此,外部 Spiderfier 脚本未加载,这解释了OverlappingMarkerSpiderfier 未定义

所以改变

script(src"http://jawj.github.io/OverlappingMarkerSpiderfier/bin/oms.min.js")

所以它包含一个=

script(src="http://jawj.github.io/OverlappingMarkerSpiderfier/bin/oms.min.js")

关于javascript - 将重叠标记 Spiderfier 与 Google map v3 集成后不显示任何标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511196/

相关文章:

javascript - Bootstrap 模态问题(无法显示第二个模态)

javascript - MongoDB 中的reduce 函数出现奇怪的数值错误

mongodb - 在应用程序级别生成 mongoId 或将其留给 mongo 之间有区别吗?

google-maps - 谷歌地图 : find out coordinates

java - GPS_EVENT_STARTED 和 GPS_EVENT_STOPPED 之间的 GPSStatus 切换

javascript - jquery - 根据文档宽度折叠面板

mongodb - MongoDB Compass 社区的身份验证失败

javascript - Mongodb 位置运算符不起作用

javascript - 我可以通过 Google map 自动填充获取唯一的迪拜城市地址吗?

javascript - 如何像使用 PHP 一样在 HTML 页面中运行 Node.js 脚本?