Dear all, I am interested in elementary map and working on it after past 2~3 months. I found some issues to be discussed with EFL developers.
1) Overlay Support For App. developers (users), elm_map only supports marker overlay. If users want to overlay line or polygon, users should make it' own evas object. But elm_map uses geographical coordinates as default, not x, y coordinates. So users should trace the scroller events and move the object. It is uncomfortable for users. elm_map should trace this and move the object. So, I think that elm_map should support overlay APIs for this reason as follows. a). Common overlay * Object: Elm_Map_Overlay * APIs: elm_map_overlay_del(Evas_Object *map, Elm_Map_Overlay *overlay) elm_map_overlay_region_show() elm_map_overlay_geo_set() elm_map_overlay_style_set() elm_map_overlay_icon_set() elm_map_overlay_content_set() elm_map_overlay_del_cb_set() ..., etc. b) Group Elm_Map_Overlay *elm_map_overlay_group_add(Evas_Object *map) void elm_map_overlay_group_zoom_max_set(Evas_Object *map, Elm_Map_Overlay *group, int zoom) b) Marker Elm_Map_Overlay *elm_map_overlay_marker_add(Evas_Object *map) c) Line Elm_Map_Overlay *elm_map_overlay_line_add(Evas_Object *map, double start_lon, double start_lat, double end_lon, double end_lat) d) Polygon Elm_Map_Overlay *elm_map_overlay_polygon_add(Evas_Object *map) void elm_map_overlay_polygon_geo_add(Evas_Object *map, Elm_Map_Overlay *polygon, double lon, double lat) void elm_map_overlay_polygon_geo_clear(Evas_Object *map, Elm_Map_Overlay *polygon, double lon, double lat) etc) Scale, Circle, ... as needed. Common overlay object provides common APIs and users can add any overlay object. 2) External Service (Provider) Elm_map supports external services (tiles, Routes, Geocoding) There are three ways to support external services in elm_map. One is hard-coded way (OSM). The other way is plug-in (module) and EMap (PROTO/emap). Hard-coded ways are better for open provider (e.g. OSM) as they are now (build-time). Module ways are better for platform dependent commercial provider such as googlel map, bing map (loading time). Emap ways are better for users(App. developers) to make it's own style of map (runtime). However, those are not categorized, hard to understand and not easy to use as follows: elm_map_source_names_get (tiles) elm_map_utils_convert_coord_into_geo (tiles) elm_map_route_add (route) elm_map_utils_convert_coord_into_name (Geoname) elm_map_track_add (emap) ..., etc. I found that this was discussed previously --> http://www.mail-archive.com/enlightenment-devel@lists.sourceforge.net/msg32179.html But it was only said about emap ways (separated from elm_map) Also I found that PROTO/emap. But emap currently only supports track (gpx file). Also maintainers disappeared....;( I think that those APIs should be categorized as follows: a) Provider: void elm_map_provider_del(Evas_Object *map, Elm_Map_Provider *provider) Eina_List *elm_map_provider_get(Evas_Object *map, Elm_Map_Provider_Type type) void elm_map_provider_set(Evas_Object *map, Elm_Map_Provider_Type type, const Elm_Map_Provider *provider) Elm_Map_Provider *elm_map_provider_tile_add(Evas_Object *map, EMap_Tile *emap) Elm_Map_Provider *elm_map_provider_geoname_add(Evas_Object *map, EMap_Geoname *route) Elm_Map_Provider *elm_map_provider_route_add(Evas_Object *map, EMap_Route *emap) Elm_Map_Provider *elm_map_provider_poi_add(Evas_Object *map, EMap_POI *emap) b) Geoname (Mixed with projection APIs) void elm_map_convert_address_into_geo() void elm_map_convert_geo_into_address() c) Route (Mixed with overlay APIs) Elm_Map_Overlay *elm_map_overlay_route_add(Evas_Object *map, ...) void elm_map_route_details_get(Evas_Object *map, Elm_Map_Overlay *overlay, ...) d) POI (Point Of Interests): Elm_Map_Overlay *elm_map_overlay_poi_add(Evas_Object *map, ...) void elm_map_poi_details_get(Evas_Object *map, Elm_Map_Overlay *overlay, ...) etc) EMap emap _tile_new() emap_route_new() (This already exists) emap_geoname_new() --> same as emap_poi_new() ... etc. 3) Property AFAIK, property setting for evas object is only implemented by APIs. There needs more APIs for map object property elm_map_zoom_max_set/get elm_map_zoom_min_set/get elm_map_scroller_freeze_set/get elm_map_gesture_disabled_set/get (elm_config should override this property if so) 4) Signals "load,detail", "loaded,detail", "downloaded", "route,load", "route,loaded"names may be changed. --> "tile,load,start", "tile,loaded, "tile,load,failed", "tile,download,start", "tile,downloaded", tile,download,failed", "route,load,start", "route,loaded", "route,load,failed" "name,load", "name,loaded" --> this is not suitable for signals, elm_map_convert_address_into_geo() & elm_map_convert_geo_into_address should be asynchronous functions. In summarize, I have mentioned overlay support, provider categorization, property APIs suggestion, signal change. Above things will make a big changes in elm_map. But it will makes elm_map better and widely used. I'd like that EFL developers review my suggestion and add many comments on these. -- BRs, Kim. ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel