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

Reply via email to