Perspektywa 3D na mapach w Ulotce, CartoDB?


12

Czy istnieje jakaś biblioteka JS, która renderowałaby normalne, płaskie mapy (takie jak Leaflet) w mapę perspektywiczną taką jak ta w Internecie:

wprowadź opis zdjęcia tutaj

Czy ktoś widział coś, co mogłoby przekształcić dane CartoDB w reprezentację 3D, na przykład?


1
Nie jestem pewien integracji z kartodbem, ale ostatnio widziałem ten post na temat tworzenia map 3D z QGIS przy użyciu biblioteki three.js . Możesz na to rzucić okiem.
RyanKDalton

2
Zobacz także: Three.js + ulotka = mapy 3D? na StackOverflow
RyanKDalton


1
Może uznasz tę wizualizację za przydatną: pluto.cartodb.com/viz/bf4dacd4-003c-11e3-aaf8-a9294e572fad/…
javisantana

Odpowiedzi:


7

Może mógłbyś użyć Osmbuildings . Jest to biblioteka JavaScript do wizualizacji geometrii budynków OpenStreetMaps (lub niestandardowego GeoJSON) w perspektywie 3D.

OSMbuildingJS

Wykorzystuje bezpośrednio dane OpenStreetMaps. Wystarczy dodać metodę loadData ():

var map = new L.Map('map').setView([52.50440, 13.33522], 17);
var osmb = new OSMBuildings(map).loadData();
L.control.layers({}, { Buildings:osmb }).addTo(map); // add to layer switcher (optional)

Lub możesz załadować własny GeoJSON. Wystarczy zmienić metodę loadData () na setData (geojson):

var osmb = new OSMBuildings(map).setData(geoJSON);

Twoje dane muszą mieć właściwość wysokość, a Ty możesz dynamicznie zmieniać kolor ścian i dachu:

osmb.setStyle({ 
     wallColor:'rgba(100, 100, 250, 0.701961)', 
     roofColor:'rgb(220, 220, 50)', 
     shadows:true 
});

A nawet zmień perspektywę cienia, ustawiając dzień:

osmb.setDate(new Date(2014, 3, 24, 13, 0));

Obecna wersja Budynków OSM (0.2.2b) nie obsługuje setDatametody, ale setdziała! To znaczy:var osmb = new OSMBuildings(map).setData(geoJSON);
bradypus

4

Jest to jeden z głównych przypadków użycia ViziCities (miasta 3D w przeglądarce obsługiwanej przez OpenStreetMap), chociaż warstwy danych jeszcze nie działają. Być może coś do rozważenia na przyszłość: https://github.com/robhawkes/vizicities

Oświadczenie: Jestem programistą ViziCities


1
Fajny projekt! Ponadto, chociaż jest dość oczywiste, że jest to projekt, z którym jesteś powiązany, możesz chcieć to nieco wyjaśnić (nawet jeśli jest to oprogramowanie typu open source).
blah238,

Dzięki, ale szukam rozwiązania innego niż WebGL.
knutole

1
Nie martw się, po prostu chciałem dać ci heads-up.
Robin Hawkes,

Czy ta wersja ma działki lub ulepszoną wersję?
joker21

2

Możesz użyć OSM2world do przekazania danych 2D z OpenStreetMap (map.osm) do obiektów 3D (map.obj), a następnie użyć innego konwertera ( convert_obj_three.py ), aby przekonwertować go na model JSON threejs (map.js), a następnie użyć w scenie Threejsa.

Możesz zobaczyć, jak tutaj:

https://www.youtube.com/watch?v=S6LbKH6NnZU


Wielkie dzięki. Ale to wymaga WebGL, prawda?
knutole

1
Threejs to biblioteka javascript / API korzystająca z WebGL. Ale w kodzie musisz podać tylko dwie biblioteki lib: three.js i OrbitControls.js (służy to do zarządzania orbitą kamery).
Sigon

1
i tak, threejs działa tylko w przeglądarkach obsługiwanych przez WebGL.
Sigon



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.