我使用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);
});
});
&#34;多点&#34;
的控制台日志屏幕截图答案 0 :(得分:1)
API文档multipoints property "points"要求提供一个Number数组,控制台日志显示您的点数组包含字符串,即:"40.993603"
修改for循环以将纬度和经度值转换为float。
我甚至怀疑你没有正确地构建点数组来构建你的多点。在这个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})
答案 1 :(得分:0)