A changeset browser for OpenStreetMap.
A light HTML+JS front end app for OWL API's resurrection branch.
- Developed against https://github.com/ppawel/openstreetmap-watch-list/tree/resurrection
A changeset browser for https://github.com/ppawel/openstreetmap-watch-list
A changeset browser for OpenStreetMap.
A light HTML+JS front end app for OWL API's resurrection branch.
Just a quick idea. While browsing the changeset map it is not always clear what state is the application in. There is a simple "loading..." status text but it does show the status of single tiles. I think it would be good to have some subtle (e.g. almost transparent) overlay for each tile which would show loading status (and perhaps even more information about that tile?).
It's nice to use mousedown
instead of click
to close popups, but mousedown
doesn't work on touch devices. At least not my iPad. There should be a fallback or something so it works across the board.
It can clearly be seen on the summary tiles because they are semi-transparent and you can see that they are loaded twice.
I suggest we switch back to @glenrobertson's leaflet-tilelayer-geojson as it has more features planned (aborting requests, merging together the same features from different tiles).
I added logging to the _loadTile
methods and below is what I got - there are two calls to _loadTile for each tile.
loading geojson tile Point(15466, 29445)
loading geojson tile Point(15466, 29444)
loading geojson tile Point(15465, 29445)
loading geojson tile Point(15467, 29445)
loading geojson tile Point(15466, 29446)
loading geojson tile Point(15465, 29444)
loading geojson tile Point(15467, 29444)
loading geojson tile Point(15465, 29446)
loading geojson tile Point(15467, 29446)
loading geojson tile Point(15464, 29445)
loading geojson tile Point(15468, 29445)
loading geojson tile Point(15464, 29444)
loading geojson tile Point(15468, 29444)
loading geojson tile Point(15464, 29446)
loading geojson tile Point(15468, 29446)
loading geojson tile Point(15463, 29445)
loading geojson tile Point(15469, 29445)
loading geojson tile Point(15463, 29444)
loading geojson tile Point(15469, 29444)
loading geojson tile Point(15463, 29446)
loading geojson tile Point(15469, 29446)
loading geojson tile Point(15466, 29445)
loading geojson tile Point(15466, 29444)
loading geojson tile Point(15465, 29445)
loading geojson tile Point(15467, 29445)
loading geojson tile Point(15466, 29446)
loading geojson tile Point(15465, 29444)
loading geojson tile Point(15467, 29444)
loading geojson tile Point(15465, 29446)
loading geojson tile Point(15467, 29446)
loading geojson tile Point(15464, 29445)
loading geojson tile Point(15468, 29445)
loading geojson tile Point(15464, 29444)
loading geojson tile Point(15468, 29444)
loading geojson tile Point(15464, 29446)
loading geojson tile Point(15468, 29446)
loading geojson tile Point(15463, 29445)
loading geojson tile Point(15469, 29445)
loading geojson tile Point(15463, 29444)
loading geojson tile Point(15469, 29444)
loading geojson tile Point(15463, 29446)
loading geojson tile Point(15469, 29446)```
It's because the following code in the GeoJSON layer initialization:
pointToLayer: function(featureData, latlng) {
return new L.Polyline([latlng]);
},
Apparently, polyline with one point is not rendered (as probably it is not valid).
I'm not sure if this is specific to summary tiles in my summary-tiles branch but go to the following URL and move the map in some direction:
http://suncobalt.dyndns.org:8082/owlviewer/index.html#5/51.234/15.535
The result is that only tiles near the edges are loaded.
Go here:
http://suncobalt.dyndns.org:8082/owlviewer/index.html#16/49.9493/18.3787
You should see 2 changesets which is fine. Now move the map so you can't see the changes anymore.
Expected result: changeset list is empty because there are no visible changes.
Actual result: changest list still contains 2 changesets.
JSONP tile requests have a timestamp in them (see callback function name) and for that reason they are not cachable.
For browsers that support it (I guess that's anything other than IE?), regular JSON requests could be used. This may require adding CORS header(s) on OWL API server side.
Would love to be able to do the following:
This is different to #17. Go to:
http://suncobalt.dyndns.org:8082/owlviewer/index.html#7/55.770/-2.324
You can see that tiles at the bottom edge are not loaded.
Uncaught TypeError: Cannot read property '_panTransition' of null data-tiles.js:44
Changesets are not sorted properly since they come from different tiles and the list sorting currently depends on request/response ordering which is rather random..
Right now in OWL you can generate tiles for any zoom level. However, it does not really make sense to generate tiles for low zoom levels (1-8 or even further, 1-10 or 1-12, this is TBD as part of this task) since the geometry would probably cover the whole tile and be unusable, not to mention it would kill any web browser.
So, we need to think what to do about that. Some options:
Options (2) and potentially (3) would require some additional API but I think here in the owlviewer project we should talk mostly about behavior/appearance and API details can come later.
We need to add a 'loading' class to #changesets
when we are actually loading things. Right now you get a permanent 'loading' message any time you have a empty changesets div, even if there aren't any changesets in the current view.
Lots of errors like that. Apparently, JSONP requests cannot be aborted:
Alternative solution: https://github.com/jaubourg/jquery-jsonp
We need to refine content in the info popup. I see two things:
The edit links need to to go real places.
Sometimes when you zoom out you get wrong data/marker tiles - e.g. marker tile over Europe shows 0 changesets. I think it has something to do with zooming quickly - looks like some requests/responses are spilling over from the old zoom level to the new.
Sometimes it can be reproduced just by opening this:
http://suncobalt.dyndns.org:8082/owlviewer/index.html#3/57.33/41.66
Note that because of settings in app.js, it zooms in at level 13 in London and then zooms out immediately because of settings in the hash.
@samanpwbb - changeset entries take up quite a bunch of valuable vertical space. Could this be more condensed?
I'm thinking
Take a look:
http://suncobalt.dyndns.org:8082/owlviewer/index.html#3/52.38/54.23
The tile with most changesets (46k at this time) is mostly on the water, Scandinavia and Iceland. This does not seem right.
Also, when you zoom in you can see that now 37k changesets is shown on a tile which covers UK and part of continental Europe.
This behavior continues as you zoom in.
We need OSM map attribution on our map right?
Here are three concepts for extending the usefulness of the sidebar.
First of all, as soon as feasible, we should de-emphasize the changeset ID and make the changeset comment the title of the changeset.
Secondly, it might be interesting to do a breakdown of the contents of changesets. Here's a simple approach that just lists numbers. On the other hand, we could do a visualization (with some sort of logarithmic scale) of the contents, with details on hover.
I actually keeping the listing view simple may be better. These additional details hurt overall scannability / legibilitiy of the listing. The best approach would be to keep the listing simple by default, and then implement an expanded view with more details on click, similar to the way tweets work on twitter. Look at the default vs expanded.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.