2017-09-13 7 views
0

GeoJSON 및 Mapbox를 사용하여 데이터 포인트를 작성하려고합니다. 모든 포인트에 대해 기본 색상 코드를 사용할 때 제대로 작동하지만 데이터 유도 스타일링을 사용하여 다른 속성 값에 다른 색상을 지정하면 오류가 발생합니다. mapboxgl.js를 사용하고 있습니다.Mapboxgl.js 및 GeoJSON의 '원색'데이터 기반 스타일링을 사용하는 중에 오류가 발생하지만 기본 색상으로 잘 작동합니다.

나는 크롬에서 다음과 같은 오류가 검사받을 :

net::ERR_INTERNET_DISCONNECTED 
exports.getJSON @ ajax.js:33 
evented.js:111 Error 
at XMLHttpRequest.r.onerror (ajax.js:18) 

도와주세요! 내 GeoJSON 및 HTML 파일은 다음과 같습니다.

mapboxgl.accessToken = 'pk.eyJ1Ijoicml0YW1iaGFyYSIsImEiOiJjajZuNGZjNHUwNHgxMzNwc29hZ2ZkbmRvIn0.4kTuXEpbJBeoN3jCp3pfwQ'; 
var map = new mapboxgl.Map({ 
    container: 'map', 
    style: 'mapbox://styles/mapbox/dark-v9', 
    center: [-121.403732, 40.492392], 
    zoom: 10 
}); 
map.on("load", function() { 
    map.addSource('pH', { 
     'type': 'geojson', 
     'data': 'test.json' 
    }); 
    map.addLayer({ 
     id: 'heat-map', 
     type: 'circle', 
     source: 'pH', 
     paint: { 
      // 'circle-color': '#f1f075', 
      'circle-color': { 
       property: 'value', 
       stops: [ 
        [6, '#f1f075'], 
        [10, '#e55e5e'] 
       ]   
      }, 
      "circle-radius": 6, 
      'circle-opacity': 0.8 
     }, 
    }); 
}); 

GeoJSON 파일 :

{ 
    "type": "FeatureCollection", 
    "features": [{ 
     "type": "Feature", 
     "properties": { "value": "7" }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.415061, 40.506229] 
     } 
    }, { 
     "type": "Feature", 
     "properties": { "value": "8" }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.505184, 40.488084] 
     } 
    }, { 
     "type": "Feature", 
     "properties": { "value": "9" }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.354465, 40.488737] 
     } 
    }] 
} 

답변

0

나는 문제가 인해 value의이 문자열이 아닌 숫자로 geojson에 있다는 사실을 믿습니다. 나는 당신의 예제 코드를 다음과 같이 번호로 변경하면 나를 위해 일한

{ 
    "type": "FeatureCollection", 
    "features": [{ 
     "type": "Feature", 
     "properties": { "value": 7 }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.415061, 40.506229] 
     } 
    }, { 
     "type": "Feature", 
     "properties": { "value": 8 }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.505184, 40.488084] 
     } 
    }, { 
     "type": "Feature", 
     "properties": { "value": 9 }, 
     "geometry": { 
      "type": "Point", 
      "coordinates": [-121.354465, 40.488737] 
     } 
    }] 
} 

당신은 여전히 ​​당신이 로컬 서버를 실행해야 할 수도 있습니다 AJAX 오류가 발생하면 (당신은 당신의 프로젝트 폴더에 python -m SimpleHTTPServer이 작업을 수행 한 후로드 할 수 있습니다 브라우저에서 localhost:8000/path/to/index.html)

+0

고마워! 그것은 효과가 있었다. 내 json 파일에는 모든 문자열 값이 있기 때문에 여전히 문자열 값을 사용하여 동일한 작업을 수행 할 수있는 방법이 있습니다. –

+0

범주 형 함수를 사용할 수는 있지만 문자열 값 사이를 보간 할 수 없으므로 각 'value'문자열에 색상 값을 지정해야합니다. 우리는 곧 데이터 값에'to-number '함수를 호출 할 수있게 해주는'expressions'이라는 새로운 기능을 릴리즈 할 것입니다 (현재 github https://github.com/mapbox의'master' 브랜치에서 사용 가능합니다)/mapbox-GL-JS) – mollymerp

+0

감사합니다, 내가 csv2geojson.csv2geojson (csvString 사용 GeoJSON 데이터를 CSV 파일을 변환하고 {latfield 'LATFIELDNAME', lonfield 'LONFIELDNAME', 구분 기호를 ',' } , function (err, data) { }); 자동으로 모든 값을 문자열 데이터 유형으로 저장합니다. 여기에 데이터 유형을 정의 할 수 있습니까? 인터넷에서 찾았지만 설명이나 사용법을 찾을 수 없었습니다. (죄송합니다, 내가 주제를 벗어났다는 것을 알고 있습니다. 공유 한 링크에서 To-Number를 사용하려고하지만이를 수행하는 방법을 이해하는 데 시간이 필요합니다) –