【问题标题】:Map layer is not defined地图图层未定义
【发布时间】:2014-08-26 06:11:30
【问题描述】:

我正在尝试根据从数据库中获得的 JSON 对象创建一个点聚类层。这是我绘制点簇层的 JavaScript:

function addClusters() {
$.ajax({
    url: "index.aspx/getBusCommuter",
    type: "POST",
    data: "",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        var parsed = JSON.parse(data.d);
        $.each(parsed, function (i, jsondata) {
            var coordXicon = jsondata.BusStopX;
            var coordYicon = jsondata.BusStopY;
            var commuterAmt = jsondata.CommuterAmt;

            var latlng = new esri.geometry.Point({ "x": coordXicon, "y": coordYicon, "spatialReference": { "wkid": 4326 } });

            // cluster layer that uses OpenLayers style clustering
            clusterLayer = new ClusterLayer({
                "data": commuterAmt,
                "distance": 100,
                "id": "clusters",
                "labelColor": "#fff",
                "labelOffset": 10,
                "resolution": map.extent.getWidth() / map.width,
                "singleColor": "#888"
            });
            var defaultSym = new SimpleMarkerSymbol().setSize(4);
            var renderer = new ClassBreaksRenderer(defaultSym, "clusterCount");

            var picBaseUrl = "http://static.arcgis.com/images/Symbols/Shapes/";
            var blue = new PictureMarkerSymbol(picBaseUrl + "BluePin1LargeB.png", 32, 32).setOffset(0, 15);
            var green = new PictureMarkerSymbol(picBaseUrl + "GreenPin1LargeB.png", 64, 64).setOffset(0, 15);
            var red = new PictureMarkerSymbol(picBaseUrl + "RedPin1LargeB.png", 72, 72).setOffset(0, 15);
            renderer.addBreak(0, 2, blue);
            renderer.addBreak(2, 200, green);
            renderer.addBreak(200, 1001, red);

            clusterLayer.setRenderer(renderer);
            map.addLayer(clusterLayer);
        });
    },
    error: function (request, state, errors) {
    }
});
}

但是,当我尝试运行它时,它告诉我一个错误消息,即 clusterLayer 未定义。我想知道我错过了哪一部分,我的做法是否正确。

另外,我想知道是否可以/正确地将我获得的 commuterAmt 设置为数据,以便为地图上的每个点附加正确的数量?

我的参考来自:ArcGIS Documentation

提前致谢。

【问题讨论】:

    标签: dictionary arcgis esri arcgis-js-api


    【解决方案1】:

    尝试下载示例代码 ArcGIS Documentation 包括来自额外目录的 ClusterLayer.js

     var dojoConfig = { 
            paths: {
              extras: location.pathname.replace(/\/[^/]+$/, "") + "/extras"
            }
          };
    

    然后在你的代码中使用

    define dojo.provide("extras.ClusterLayer");
    

    然后打电话

    clusterLayer = new extras.ClusterLayer({
                    "data": commuterAmt,
                    "distance": 100,
                    "id": "clusters",
                    "labelColor": "#fff",
                    "labelOffset": 10,
                    "resolution": map.extent.getWidth() / map.width,
                    "singleColor": "#888"
                });
    

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多