Hi there.
Just want to ask if you manage to make it work.
Thanks
Yuval
On Wednesday, September 9, 2015 at 1:17:47 PM UTC+3, Poul Sørensen wrote:
>
> I forgot to mention that to get the feature loading i added both vector
> layers:
> map.addLayer(new ol.layer.Vector({
> style: new ol.style.Style({
> fill: null,
> stroke: null,
> image: null,
> }),
> source: vt
> }));
> map.addLayer(new ol.layer.Vector({
> style: new ol.style.Style({
> stroke: new ol.style.Stroke({
> color: '#ffcc33',
> width: 2
> })
> }),
> source: this.tracksVectorSource
> }));
>
>
> using a null style for the loader.
>
> On Wednesday, 9 September 2015 12:16:43 UTC+2, Poul Sørensen wrote:
>>
>> I just wanted to share my solution of what I needed up doing.
>>
>> Background is that I generated some geojson vector tiles using geojson-vt
>> explained here https://www.mapbox.com/blog/introducing-geojson-vt/ Those
>> are alittle special from geojson.
>> Example:
>>
>> {
>> "geometry": [
>> [
>> [
>> 2190,
>> 1281,
>> 10
>> ],
>> [
>> 2189,
>> 1276,
>> 2662
>> ]
>> ]
>> ],
>> "type": 2,
>> "tags": {
>> "id": "ascend-garmin-001-AA98F6D4FC513B276E90C72154635978",
>> "start": "2015-08-13T17:04:24+02:00",
>> "stop": "2015-08-13T17:48:46+02:00"
>> }
>> },
>>
>>
>> each tile uses local coordinates relative to the tile, and the tiles are
>> defined using a tiling scheme in the projection EPSG:3857. The base map i
>> wanted to draw this ontop in OL3 was of a different projection.
>>
>> So i did the following using a TileVector that is queried in the local
>> coordinate system, then reprojects and fetches tiles from EPSG:3857 scheme
>> and combiles vectors into a normal ol.source.vector.
>>
>> //VectorTiles Loader
>> var vt = new ol.source.TileVector({
>> projection: epsg25832, //This is not used for
>> TileVector
>> tileGrid: tg,
>> tileUrlFunction: (tileCoord: number[], ratio,
>> proj) => {
>> return tileCoord.join(",");
>> },
>> tileLoadFunction: (urlParamsStr: string, loaded)
>> => {
>> //Consider if a mapbox rendere is better,
>> currently we fetch tiles, convert coordinates and then visualize in canvas.
>> //Data is optimized to be rended on a per
>> tile case.
>> var tileCoord = urlParamsStr.split(",").map((
>> s) => parseInt(s));
>> var extent = getTileCoordExtent(tg, tileCoord
>> , epsg25832, "EPSG:3857");
>> var resolution = tg.getResolution(tileCoord[0
>> ]);
>> var newZ = linearFindNearest(tilegrid.
>> getResolutions(), resolution, 1);
>> var newTileRange =
>> getTileRangeForExtentAndResolution(tilegrid, extent, tilegrid.
>> getResolution(newZ));
>> var defers = 0;
>> var features = [];
>> var localCache = {};
>>
>>
>> for (var ix = newTileRange[0]; ix <=
>> newTileRange[1]; ++ix) {
>> for (var iy = newTileRange[2]; iy <=
>> newTileRange[3]; ++iy) {
>> defers++;
>>
>>
>> ((tz, tx, ty) => {
>> setTimeout(() => {
>> var key = "" + tz + tx + ty;
>>
>>
>> if (!tileCache[key]) {
>> tileCache[key] = [];
>> localCache[key] = true;
>> client.getData(this.
>> options.document.workSet, this.options.document.name + "/vt/" + newZ +
>> "/" + tx + "/" + ty + ".geojson")
>> .done(result => {
>> //If data is
>> returned as string make sure its json.
>> var data: any[] =
>> typeof (result) === "string" ? JSON.parse(result) : result;
>>
>>
>> for (var i = 0;
>> i < data.length; i++) {
>> var obj =
>> data[i].tags;
>> obj.geometry
>> = new ol.geom.LineString(data[i].geometry[0].map((coord: number[]) => {
>> //Convert
>> from vector tiles local tile coordinates (mercator)
>> var xpx =
>> (coord[0] / 4096 + (tx)) / (1 << (tz));
>> var ypx =
>> (coord[1] / 4096 + (ty)) / (1 << (tz));
>> var p =
>> [((xpx - 0.5) * 2) *
>> ...
>
>
--
You received this message because you are subscribed to the Google Groups "OL3
Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ol3-dev.
To view this discussion on the web visit
https://groups.google.com/d/msgid/ol3-dev/66ff97e3-d140-4e39-9488-f65cabd10c20%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.