I think that no replay means I am allowed to do this~!! hahaha...

Anyway, this will make huge changes in elm_map.
I look forward that someone will review my changes.  :D

2012/1/9 Bluezery <ohpo...@gmail.com>:
> 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.



-- 
BRs,
Kim.

------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to