2017-03-12 3 views
0

저는 Arcgis JSAPI 4.3을 사용하여 응용 프로그램을 개발하고 있습니다. 이벤트 웹 사이트에 공개 된 API를 사용하여지도에 공개 이벤트를 표시하려고합니다.Arcgis JSAPI, 오류 : <circle> 속성 cx : 예상 길이 "NaN"

많은 이벤트의 이벤트 위도 및 경도 정보가 포함 된 Json 데이터로 XMLHttpRequest 응답을 받았습니다.

하지만 이 오류은 (는) 콘솔에 있습니다. MapView.js : 379 오류 : 속성 cx : 예상 길이 "NaN".

**** 오류 스크린 샷 **** enter image description here

내가지도를 드래그 는 오류 수는 점점 증가하고있다.

마커는 아래 그림과 같이 항상 왼쪽 상단에 표시됩니다. enter image description here

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); 
    }); 

    }); 

enter image description here

답변

1

API 설명서, multipoints property "points"는, 수의 배열을 요구 "멀티"의 콘솔 로그 스크린 샷 및 콘솔 로그 쇼의 배열 점이 포함되어 있습니다 (예 : "40.993603"

) 위도와 경도 값을 변환하여 부동 상태로 변환합니다.

멀티 포인트를 만들기 위해 포인트 배열을 올바르게 형성하지 않은 것조차 생각합니다. 이 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})

0

내가 배열에 숫자를 문자열로 변환 한 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)]); 

enter image description here

은 이제 고정. 다시 도움을 주셔서 감사합니다.

enter image description here