繁体   English   中英

Arcgis JSAPI,错误: <circle> 属性cx:预期长度,“ NaN”

[英]Arcgis JSAPI, Error: <circle> attribute cx: Expected length, “NaN”

我正在使用Arcgis JSAPI 4.3开发应用程序。 我正在尝试使用提供事件网站的公共API在地图上显示一些公共事件。

我有XMLHttpRequest响应作为Json数据,其中包含许多事件的事件纬度和经度信息。

但是我在控制台中收到此错误 MapView.js:379错误:属性cx:预期长度为“ NaN”。

****错误截图**** 在此处输入图片说明

当我拖动地图时,错误计数越来越多。

标记始终显示在左上角,如下所示。 在此处输入图片说明

var latitude = [];
var longitude = [];
eventIO.request.onreadystatechange = function () {
    if (this.readyState === 4) {

      listItems = JSON.parse(this.responseText);
      data = listItems.recs;

      for (var j=0; j < data.length; j++) {
        latitude.push(data[j].venue.lat);
        longitude.push(data[j].venue.lng);
      }
}


  require([
    "esri/Map",
    "esri/PopupTemplate",
    "esri/views/MapView",
    "esri/Graphic",
    "esri/geometry/Point",
    "esri/geometry/Multipoint",
    "esri/geometry/Polyline",
    "esri/geometry/Polygon",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/layers/FeatureLayer",
    "dojo/domReady!"
  ], function(
    Map, PopupTemplate, MapView,
    Graphic, Point, Multipoint, Polyline, Polygon,
    SimpleMarkerSymbol, FeatureLayer
  ) {   

    var map = new Map({
      basemap: "hybrid"
    });

    var view = new MapView({
      center: [30, 40],
      container: "viewDiv",
      map: map,
      zoom: 6
    });

    var myPoints = {"points": [[longitude, latitude]]};
    var multipoint = new Multipoint(myPoints);

    var markerSymbol = new SimpleMarkerSymbol({
      color: [226, 119, 40],
      outline: {
        color: [255, 255, 255],
        width: 2
      }
    });

    var pointGraphic = new Graphic({
      geometry: multipoint,
      symbol: markerSymbol
    });

    view.then(function() {
      view.graphics.add(pointGraphic);
    });

  });

“多点”的控制台日志屏幕截图

在此处输入图片说明

API文档的multipoints属性“ points”要求一个Number数组,并且控制台日志显示您的点数组包含字符串,即: "40.993603"

修改您的for循环以将纬度和经度值转换为浮点数。

我什至怀疑您没有正确地形成点阵列来构建多点。 在此for循环中,应将经度和纬度推入同一数组中。

var points = [];
for (var j=0; j < data.length; j++) {
  points.push([parseFloat(data[j].venue.lng, parseFloat(data[j].venue.lat)]);
}

然后: var multipoint = new Multipoint({"points" : points})

我已经将字符串转换为数组中的数字,并将NaN值转换为固定值。

我已经更改了如下代码;

latitude.push(parseFloat(data[j].venue.lat) || 40 );
longitude.push(parseFloat(data[j].venue.lng) || 29 );
points.push([(parseFloat(data[j].venue.lat) || 40 ),(parseFloat(data[j].venue.lng) || 29 )]);

在此处输入图片说明

现在修复了。 再次感谢您的帮助。

在此处输入图片说明

暂无
暂无

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

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