【问题标题】:Using PruneCluster with AngularJS Leaflet Directive将 PruneCluster 与 AngularJS 传单指令一起使用
【发布时间】:2016-01-14 19:45:19
【问题描述】:

我在使用 PruneCluster 为 geojson 数据加载集群标记时遇到问题。集群不显示,并且控制台中没有错误以帮助进行故障排除。这是我当前的 controller.js 代码:

 angular.module('bizvizmap').controller('controller', [
    '$scope', '$http', '$filter', 'leafletData',
    function ($scope, $http, $filter, leafletData){
    $scope.center = {
        lat: 39.5500507,
        lng: -105.7820674,
        zoom: 4
            },
    $scope.defaults = {
        scrollWheelZoom: false
            },
    $scope.events = {
            map: {
            enable: ['zoomstart', 'drag', 'click', 'mousemove'],
            logic: 'emit'
            }
            },
    $scope.layers = {
            baselayers: {
            osm: {
            name: 'OpenStreetMap',
            url: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
            type: 'xyz'
                    }
                },
            markers:{}
    },

    $scope.map = null;
    leafletData.getMap("bizvizmap").then(function(map){
        $scope.map = map;
    });
    function renderMarkers(data, map){
        var markerLayer = new PruneClusterForLeaflet();
        for (var i=0; i < data.length; i++){
            var marker = new PruneCluster.Marker(data[i].geometry.coordinates[1], data[i].geometry.coordinates[0]);
            markerLayer.RegisterMarker(marker);
        }
        map.addLayer(markerLayer);
        markerLayer.ProcessView();
    }
    $scope.geojson = {};
    $http.get('data/bizvizmap.geojson').success(function (data){
            $scope.data = data;
            // Render clustered markers
            renderMarkers(data, $scope.map);
        });
]);

【问题讨论】:

    标签: javascript angularjs leaflet angular-leaflet-directive


    【解决方案1】:

    我的代码的问题是它没有访问 GeoJson 文件中的功能,并且无法显示集群标记。我解决了这个问题:

     function renderMarkers(data, map){
            var markerLayer = new PruneClusterForLeaflet();
            for (var i=0; i < data.length; i++){
                var marker = new PruneCluster.Marker(data[i].geometry.coordinates[1], data[i].geometry.coordinates[0]);
                markerLayer.RegisterMarker(marker);
            }
            map.addLayer(markerLayer);
            markerLayer.ProcessView();
        }
        $scope.geojson = {};
        $http.get('data/bizvizmap_final.geojson').success(function (data){
                $scope.data = data;
                // Render clustered markers
                renderMarkers(data.features, $scope.map);
            });
    

    【讨论】: