폴리맵 JS lybrary를 사용하여 프로젝트를 만들고 있습니다. 나는 약 200,000 포인트를 음모해야한다. 포인트를 브라우저에로드하는 데 시간이 걸리고 탐색이 매우 느립니다.사전로드 (사전 필터)가 폴리맵 API를 가리키고 있습니다.
문서를 읽었으며 데이터를 페이지에 추가하기 전에 GeoJson을 필터링하는 옵션이 없습니다.
var po = org.polymaps;
var map = po.map()
.container(document.body.appendChild(po.svg("svg")))
.center({lat: 45.468318, lon: 9.1709})
.zoom(13)
.add(po.interact());
//Skinning the map
map.add(po.image()
.url(po.url("http://{S}tile.cloudmade.com"
+ "/1a1b06b230af4efdbb989ea99e9841af" // http://cloudmade.com/register
+ "/998/256/{Z}/{X}/{Y}.png")
.hosts(["a.", "b.", "c.", ""])));
//Importing the geoJSON
map.add(po.geoJson()
.url("test_4sq.json")
.id("streets")
.on("load", loadAreas)
.tile(false));
map.add(po.compass()
.pan("none"));
// This function loads all the data and then do the filtering (very sluggish method)
function loadAreas(obj) {
for (var i = 0; i < obj.features.length; i++) {
var f = obj.features[i];
var e = obj.features[i].element;
var p = obj.features[i].data.properties;
e.setAttribute('r', 4);
e.setAttribute('id', f.data.id);
e.setAttribute('title', p.venueName);
//console.log(e);
// Displaying the data in August (month propriety = '8')
if (p.month != "08")
console.log(e);
else
e.setAttribute('display', 'none');
}
}
좋은 질문입니다. 그러나 잠재적으로 두 부분이 있습니다. 1 - 많은 수의 점을 표시하는 방법. 2 - GeoJSON을 사전 필터링하는 방법. 필자는 필터링 후 얼마나 많은 포인트를 표시 할 것으로 기대합니까? 그것이 많이 될 것이라면 아마도 파트 1에 초점을 맞추는 것이 가장 좋을 것입니다. 그리고 단지 몇 가지 경우에는 파트 2가 더 중요합니다. –
보기 당 몇백 개의 점 (최대 500)을 표시하고 싶은 점은 없습니다. 나는 브라우저가 이것을 처리 할 수 있다고 생각한다! – MrSlash
동의. 500은 케이크 조각이 될 것입니다 ... –