브라우저에서 벡터 기반 맵을 렌더링하는 라이브러리


13

웹 또는 모바일 애플리케이션에서 사용할 수 있고 이미지 대신 벡터 기반 맵을로드하는 Leaflet 또는 OpenLayers와 같은 오픈 소스 JavaScript 라이브러리가 있습니까? 도로 정보와 일부 POI 만 있으면됩니다.

내가 찾은 유일한 라이브러리는 폴리 맵이었습니다 . 그러나 여전히 벡터 SVG 데이터 (OpenStreetMap에서 선호)를 제공하는 서버 또는 서비스가 필요합니다. 또한 Mapsforge 라는 멋진 Android 프로젝트가 있지만 웹 응용 프로그램이나 다른 모바일 장치에 필요합니다.

답변:



10

벡터 그리기의 경우 Leaflet 또는 OpenLayers 가 잘 작동합니다. 거기에 새로운 것은 없습니다.

벡터 타일 맵 (예 : 다른 줌 레벨에서 다른 해상도 / 세부 정보 수준)의 경우 TileStache 는 간단하고 훌륭한 서버입니다. Polymaps (AFAIK, 유일한 범용 작업 js 타일 벡터 뷰어)로 많은 실험을 해왔습니다. 일부 사람들은 타일 ​​벡터 지원을 추가하기 위해 OpenLayers를 사용 했지만 AFAIK는 1 년 안에 트렁크에 통합되지 않았기 때문에 가까운 미래에는 관심이 없어지지 않을 것입니다.

TileStache (서버) 자체가 매우 잘 작동합니다. 그럼에도 불구하고, 나는 Polymaps에서 몇 가지 버그를 발견했으며 더 이상 업데이트되지 않기 때문에 (폐기 된 프로젝트), 프로덕션에서 사용하도록 확신 할 수 없습니다 (직접 유지해야 할 것입니다 ... 나 자신은 아직.)

내 솔루션은 AmigoCloud 에서 사용되는 사용자 정의 OpenGL 기본 벡터 렌더러를 작성하는 것이 었습니다 . 실제로 이것이 서비스에서 모든 맵이 렌더링되는 방식입니다. 이러한 목적으로 TileStache는 상당히 잘 전달되었습니다.

TileStache Vector Provider 를보고 싶습니다 . 그것을 사용하는 방법에 대한 예제는 내가 작성한 매우 기본적인 벡터 테스트 스위트를 볼 수 있습니다 .

슬프게도, Leaflet이 타일 벡터를 지원하지 않는다고 생각합니다.


감사! 웹에 간단한 tilestache 데모가 있습니까?
Karussell

폴리 맵 모집단 밀도는 바둑판 식으로 배열 된 벡터 공급자 캐시를 사용합니다 (즉, tiletache 서버를 실행하지 않고 출력 형식의 사본 만). 코드를 보면 벡터 타일링 된 polymaps.org/ex/population.html 임을 분명히 알 수 있습니다. 안타깝게도 온라인으로 제공되는 tilestache 데모는 벡터 공급자를 사용하지 않습니다. 그럼에도 불구하고 tilestache-server를 로컬로 실행하고 로컬 호스트의 데모 URL을 구성된 벡터 데이터 소스 (shapefile, postgis 등)로 바꾸면 작동합니다. 도움이 필요하면 여기로 메시지를 보내십시오.
Ragi Yaser Burhum 2014 년

나는이 대답에 동의하지 않습니다. For just drawing vectors, Leaflet or OpenLayers will do just fine. Nothing new there.이것은 벡터가 오버레이 될 경우 작동하지만 전체지도 (모든 기본 레이어)가 벡터로 구성되어 있다면 어떨까요?
giser

@giser 이것이 바로 "그냥 드로잉 벡터"와 "벡터 타일 맵"을 구별하는 이유입니다. 두 번째 답은 순전히 벡터로 만들어진 "전체"맵이라는 용어입니다. 다음은 그러한 예입니다 : bl.ocks.org/mbostock/5593150
Ragi Yaser Burhum

@ RagiYaserBurhum : 죄송합니다, 오해합니다.
giser

10

업데이트 :이를 게시 한 후 Mapbox는 Mapbox GL JS를 출시 했으며 브라우저에서 WebGL 기반 벡터베이스 맵 렌더링을 수행합니다.

현재 설정된 옵션이 없습니다. 완전 벡터 프로덕션 내지도는 Google MapsGL이 있으며 브라우저 지원 및 성능으로 인해 매우 제한적입니다.

현재 오픈 소스와 가장 가까운 것은 Kothic.js 이며 Kothic의 스크립트를 사용하여 자신의 타일을 굴립니다.


+1 이봐, 멋지다! 다운 보트를받은 이유를 이해하지 마십시오!
Karussell

6

귀하의 질문을 올바르게 이해하면 OpenLayers와 Leaflet이 벡터 데이터를로드 / 표시합니다.

예를 들어

http://leafletjs.com/examples/geojson/

GeoJSON 파일을 백그라운드에서 CloudMade를 통해 OSM을 사용하는 전단지 맵에로드합니다.

OpenLayers는 KML과 같이 더 다양한 유형의 벡터 형식을 지원할 수 있습니다.

http://dev.openlayers.org/examples/dynamic-text-layer.html

서버를 통해 벡터 데이터를 맵에 제공한다는 의미라면 MapServer, GeoServer 및 ESRI ArcGIS Server를 통해 벡터 데이터를 맵에 웹 기능 서버 (WFS)로 표시합니다.


더 많은지도를지도에로드하는 기능이 아닌 벡터 데이터로 의미합니다.
Karussell

때문에 너무 많은 중, 정지 또는 브라우저를 죽일 수있는 벡터 형식을 통해 많은 양의 데이터를 제공하는 <svg>요소, 당신은이 점을 명심해야한다
크리스티안

@Krystian SVG로지도를 렌더링하는 경우입니다. 분명히 Google지도가 Android / iOS 및 실험적인 WebGL 자바 스크립트지도에서와 같이 OpenGL / WebGL로 렌더링 할 수 있습니다.
Ragi Yaser Burhum

@RagiYaserBurhum 그래, 나는 그것에 대해 생각하지 않았지만, 여전히이 특별한 경우에 API 요법의 한계 때문에 webGL을 사용할 수 없습니다.
Krystian

1
OP는 ArcGIS API를 언급하지 않았기 때문에 (ArcGIS없이 많은 GIS를 수행 할 수 있음) 가정하지 않았습니다. 그렇습니다. ArcGIS JS와 WebGL을 혼합하는 것이 어려울 것입니다. 바둑판 식으로 배열 된 벡터는 새롭지 만 미래 일 가능성이 높습니다. 아마
Ragi Yaser Burhum

2

SVG 또는 캔버스가 아닌 webgl 기술을 기반으로하는 GL-Solar 라는 흥미로운 프로젝트를 발견했습니다 . 초기 개발 단계이지만 유망한 것으로 보입니다.

또한 MapCSS , Cartagend3.js이 언급되어야한다. d3.js는 온라인 osm 편집기 iD 에서 사용됩니다 . 전단지 및 html5 렌더링 에 대한 블로그 게시물도 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.