Code Monkey home page Code Monkey logo

makemaps's People

Contributors

spaasis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

raj347 snowolder

makemaps's Issues

Integrations: Deliver map OnClick-events to host app

A feature request:
When a user clicks on the map, deliver the coordinates and possible feature information (at least id) to the hosting application.

This is useful for for example highlighting and geocoding. Can later be expanded to multiple feature selection.

Performance updates for layers with multiple (1000+) markers

This is a tricky one.

Obvious possibility is to implement clustering (working on it), but there are cases where the user may wish to disable clustering to see every marker at once.

The other possibility would be to turn every marker into a Path. For example with L.Circlemarker the performance ( zooming, panning...) is much better than the current implementation of L.DivIcon. However, the time it takes to refresh visualization options for a Path marker seems to be at least double the time it takes to update a DivIcon. On a dataset of 10k markers, updating the fillcolor takes ~2s with the DivIcon(setIcon), but with the CircleMarker (setStyle) it takes over 30 seconds, with the script freezing multiple times during the update.

API: When underlying data changes, view options can be out-of-date

For example:
Map has a layer with predefined color steps for values ["a","b","c"]
Layer internal data changes to ["d","e","f"]
Color options need to be manually refreshed, or they remain as ["a","b","c"].

Will look into a solution once there are some proper use cases in integrated systems.

Improve export menu UI

Now that direct embed download is possible, export menu needs to be reworked a bit. Image (show legend/filters, possibly dimensions) and embed (at least dimensions, some styling?) specific options need to be separated properly, and not shown at the same time

Loading indicator not working properly on all browsers

Tested on Firefox 48 on Linux mint. Loading icon animation is stuttering. Expect this is the case for other and older browsers.

Works well on Vivaldi and Chromium on LM.

Need to see if heavy operations can be split into smaller sub tasks. Layer rendering on the map will be an issue with this approach, because if elements are added to the map in batches, the overall rendering time explodes.

Mobile UI

Currently the mobile UI is pretty rubbish, since the editor has been designed as a desktop app from the start.

Is there any need to improve mobile usability for the editor side? As I see it, the only mobile use case is to view already edited embedded maps.

Wrong language defaults

Language defaults to Finnish if the browser sends something other than en/fi. Default should be English

Publish to npm

When integration has been deemed to work sufficiently, publish repo to npm.

Figure out how to refresh layers without remove->add

This would make it much easier to store, for example, custom labels added manually to layers and would probably be more effective.

Simple color changes could easily be done by setStyle, but how about when changing for example the symbol type? Could probably get around that by setIcon.

Cluster info position

On clustered maps, the info that is shown on hover is often placed on top of the marker and the clustered area. Couple of options

  1. Allow the user to disable the popup altogether
  2. Place the cluster information on a static position on the screen. This would also remove the confusion caused by the pop-up menu opening method not affecting the clustering pop-ups.
    The issue with this is the placement: how to make sure that the legend and filters are not on top of the cluster display?

Local tile caching

Need to make sure that the tile loading from external services does not exceed allowed limits or drain their servers. Tile caching could be used to reduce this.

The idea

  1. When a tile layer is downloaded from an external service, store it to the server
  2. Load the layer from local server instead of the external service
  3. Update this storage in a set interval

Proper error handling

Currently most errors are handled silently, with the application just freezing and the error message being handled only in the console. Needs to have proper alerts and non-freezing handling

Embedding via mapJSON results in NoScript (probably others) logging a XSS issue

When embedding direct JSON files (for example https://simopaasisalo.github.io/MakeMaps_embed/tests/pori.html), an XSS protection is triggered in NoScript (https://noscript.net/).

I tried to use encodeURIComponent when generating the embed script, but this fails when the JSON contains '', for example in Legend URL.

Need to see how to deal with the encodeURIComponent route, as it would be the best way to avoid all kinds of mischief

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.