2011-08-04 15:35:12 -07:00
|
|
|
/**
|
|
|
|
* Simple Elementary's <b>map widget</b> example, illustrating route and
|
|
|
|
* name usage.
|
|
|
|
*
|
|
|
|
* See stdout/stderr for output. Compile with:
|
|
|
|
*
|
|
|
|
* @verbatim
|
|
|
|
* gcc -g `pkg-config --cflags --libs elementary` map_example_03.c -o map_example_03
|
|
|
|
* @endverbatim
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <Elementary.h>
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#else
|
|
|
|
# define __UNUSED__
|
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct _Example_Data
|
|
|
|
{
|
|
|
|
Evas_Object *map, *entry;
|
|
|
|
Elm_Map_Route *route;
|
|
|
|
double start_lon, start_lat, dest_lon, dest_lat;
|
|
|
|
Elm_Map_Name *name;
|
|
|
|
} Example_Data;
|
|
|
|
|
|
|
|
static Example_Data example_data;
|
|
|
|
|
|
|
|
static void
|
|
|
|
_name_loaded(void *data, Evas_Object *obj, void *ev __UNUSED__)
|
|
|
|
{
|
|
|
|
Example_Data *example_data = data;
|
|
|
|
Evas_Object *map = obj;
|
|
|
|
|
|
|
|
if (example_data->route)
|
|
|
|
elm_map_route_remove(example_data->route);
|
|
|
|
|
|
|
|
elm_map_name_region_get(example_data->name, &(example_data->dest_lon),
|
|
|
|
&(example_data->dest_lat));
|
|
|
|
|
|
|
|
example_data->route = elm_map_route_add(map, ELM_MAP_ROUTE_TYPE_FOOT,
|
|
|
|
ELM_MAP_ROUTE_METHOD_SHORTEST,
|
|
|
|
example_data->start_lon, example_data->start_lat,
|
|
|
|
example_data->dest_lon, example_data->dest_lat);
|
|
|
|
elm_map_route_color_set(example_data->route, 0, 255, 0, 255);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_bt_route(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
|
|
|
|
{
|
|
|
|
Example_Data *example_data = data;
|
|
|
|
Evas_Object *map;
|
|
|
|
char *address;
|
|
|
|
|
|
|
|
map = example_data->map;
|
|
|
|
address = (char *)elm_object_text_get(example_data->entry);
|
|
|
|
|
|
|
|
example_data->name = elm_map_utils_convert_name_into_coord(map, address);
|
|
|
|
|
|
|
|
evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
|
|
|
|
{
|
|
|
|
int zoom;
|
From: Bluezery <ohpowel@gmail.com>
Subject: [E-devel] [Patch][elm_map] Add overlay in the map
I made a overlay APIs in the map. This will replace the marker APIs.
I hope that markers will be deleted before elementary 1.0 release.
This was discussed before in
http://marc.info/?l=enlightenment-devel&m=132685497711772&w=2
Marker only supports layout style overlay. So only icon and image are
suitable for marker. For now on, overlay can support any evas object
and also layout style.
Currently overlay support default, bubble, and class types. And more
types will be added (Polyline, Polygon, scale, POI etc.).
I made a Elm_Map_Overlay opaque structure for handling general overlay
properties (hide, pause, show, etc.) and coordinates or internal
content (icon, content, etc.) for those different types.
Class type overlay is something like mixture of previous marker group
and marker class.
If member overlays in the same class are closed, they will be grouped.
(Same functionality as previous maker group.) The group's properties
and contents are defined by using general overlay functions. (New
functionality)
This defined properties and contents can be be propagated to member
overlays appended to this class. (Same functionality as previous
maker class.)
There are some missing functionalities remained. Group callbacks are
not supported yet in the overlays.
So images inside group bubble can not be shown. I will implement this
feature.
After this patch, I will fix signals and function names before
elementary 1.0 releases.
SVN revision: 68672
2012-03-04 20:18:33 -08:00
|
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
|
|
|
|
zoom = elm_map_zoom_get(data);
|
|
|
|
elm_map_zoom_set(data, zoom + 1);
|
2011-08-04 15:35:12 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
|
|
|
|
{
|
|
|
|
int zoom;
|
From: Bluezery <ohpowel@gmail.com>
Subject: [E-devel] [Patch][elm_map] Add overlay in the map
I made a overlay APIs in the map. This will replace the marker APIs.
I hope that markers will be deleted before elementary 1.0 release.
This was discussed before in
http://marc.info/?l=enlightenment-devel&m=132685497711772&w=2
Marker only supports layout style overlay. So only icon and image are
suitable for marker. For now on, overlay can support any evas object
and also layout style.
Currently overlay support default, bubble, and class types. And more
types will be added (Polyline, Polygon, scale, POI etc.).
I made a Elm_Map_Overlay opaque structure for handling general overlay
properties (hide, pause, show, etc.) and coordinates or internal
content (icon, content, etc.) for those different types.
Class type overlay is something like mixture of previous marker group
and marker class.
If member overlays in the same class are closed, they will be grouped.
(Same functionality as previous maker group.) The group's properties
and contents are defined by using general overlay functions. (New
functionality)
This defined properties and contents can be be propagated to member
overlays appended to this class. (Same functionality as previous
maker class.)
There are some missing functionalities remained. Group callbacks are
not supported yet in the overlays.
So images inside group bubble can not be shown. I will implement this
feature.
After this patch, I will fix signals and function names before
elementary 1.0 releases.
SVN revision: 68672
2012-03-04 20:18:33 -08:00
|
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
|
|
|
|
zoom = elm_map_zoom_get(data);
|
|
|
|
elm_map_zoom_set(data, zoom - 1);
|
2011-08-04 15:35:12 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
|
|
|
{
|
From: Bluezery <ohpowel@gmail.com>
Subject: [E-devel] [Patch][elm_map] Add overlay in the map
I made a overlay APIs in the map. This will replace the marker APIs.
I hope that markers will be deleted before elementary 1.0 release.
This was discussed before in
http://marc.info/?l=enlightenment-devel&m=132685497711772&w=2
Marker only supports layout style overlay. So only icon and image are
suitable for marker. For now on, overlay can support any evas object
and also layout style.
Currently overlay support default, bubble, and class types. And more
types will be added (Polyline, Polygon, scale, POI etc.).
I made a Elm_Map_Overlay opaque structure for handling general overlay
properties (hide, pause, show, etc.) and coordinates or internal
content (icon, content, etc.) for those different types.
Class type overlay is something like mixture of previous marker group
and marker class.
If member overlays in the same class are closed, they will be grouped.
(Same functionality as previous maker group.) The group's properties
and contents are defined by using general overlay functions. (New
functionality)
This defined properties and contents can be be propagated to member
overlays appended to this class. (Same functionality as previous
maker class.)
There are some missing functionalities remained. Group callbacks are
not supported yet in the overlays.
So images inside group bubble can not be shown. I will implement this
feature.
After this patch, I will fix signals and function names before
elementary 1.0 releases.
SVN revision: 68672
2012-03-04 20:18:33 -08:00
|
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
|
2011-08-04 15:35:12 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
|
|
|
{
|
From: Bluezery <ohpowel@gmail.com>
Subject: [E-devel] [Patch][elm_map] Add overlay in the map
I made a overlay APIs in the map. This will replace the marker APIs.
I hope that markers will be deleted before elementary 1.0 release.
This was discussed before in
http://marc.info/?l=enlightenment-devel&m=132685497711772&w=2
Marker only supports layout style overlay. So only icon and image are
suitable for marker. For now on, overlay can support any evas object
and also layout style.
Currently overlay support default, bubble, and class types. And more
types will be added (Polyline, Polygon, scale, POI etc.).
I made a Elm_Map_Overlay opaque structure for handling general overlay
properties (hide, pause, show, etc.) and coordinates or internal
content (icon, content, etc.) for those different types.
Class type overlay is something like mixture of previous marker group
and marker class.
If member overlays in the same class are closed, they will be grouped.
(Same functionality as previous maker group.) The group's properties
and contents are defined by using general overlay functions. (New
functionality)
This defined properties and contents can be be propagated to member
overlays appended to this class. (Same functionality as previous
maker class.)
There are some missing functionalities remained. Group callbacks are
not supported yet in the overlays.
So images inside group bubble can not be shown. I will implement this
feature.
After this patch, I will fix signals and function names before
elementary 1.0 releases.
SVN revision: 68672
2012-03-04 20:18:33 -08:00
|
|
|
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
|
2011-08-04 15:35:12 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
|
|
|
{
|
|
|
|
elm_exit();
|
|
|
|
}
|
|
|
|
|
|
|
|
/* FIXME: it shouldn't be required. For unknown reason map won't call
|
|
|
|
* pan_calculate until shot delay time, but then it will take a screenshot
|
|
|
|
* when the map isn't loaded yet (actually it won't be downloaded, because
|
|
|
|
* after the SS it will kill the example). */
|
|
|
|
static Eina_Bool
|
|
|
|
_nasty_hack(void *data)
|
|
|
|
{
|
|
|
|
Evas_Object *o = data;
|
|
|
|
Evas *e = evas_object_evas_get(o);
|
|
|
|
evas_smart_objects_calculate(e);
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
2011-08-28 21:16:18 -07:00
|
|
|
EAPI_MAIN int
|
2011-08-04 15:35:12 -07:00
|
|
|
elm_main(int argc __UNUSED__, char **argv __UNUSED__)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *bg, *map, *box, *bt, *entry;
|
|
|
|
|
|
|
|
win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
|
|
|
|
elm_win_title_set(win, "Map Route Example");
|
|
|
|
evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
|
|
|
|
|
|
|
|
bg = elm_bg_add(win);
|
|
|
|
elm_win_resize_object_add(win, bg);
|
|
|
|
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_show(bg);
|
|
|
|
|
|
|
|
map = elm_map_add(win);
|
|
|
|
elm_win_resize_object_add(win, map);
|
|
|
|
evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_show(map);
|
|
|
|
|
|
|
|
box = elm_box_add(win);
|
|
|
|
evas_object_show(box);
|
|
|
|
|
|
|
|
bt = elm_button_add(win);
|
|
|
|
elm_object_text_set(bt, "+");
|
|
|
|
elm_box_pack_end(box, bt);
|
|
|
|
evas_object_show(bt);
|
|
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
|
|
|
|
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
bt = elm_button_add(win);
|
|
|
|
elm_object_text_set(bt, "-");
|
|
|
|
elm_box_pack_end(box, bt);
|
|
|
|
evas_object_show(bt);
|
|
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
|
|
|
|
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
bt = elm_button_add(win);
|
|
|
|
elm_object_text_set(bt, "X");
|
|
|
|
elm_box_pack_end(box, bt);
|
|
|
|
evas_object_show(bt);
|
|
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
|
|
|
|
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
bt = elm_button_add(win);
|
|
|
|
elm_object_text_set(bt, "#");
|
|
|
|
elm_box_pack_end(box, bt);
|
|
|
|
evas_object_show(bt);
|
|
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
|
|
|
|
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
elm_box_horizontal_set(box, EINA_TRUE);
|
|
|
|
elm_win_resize_object_add(win, box);
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
entry = elm_entry_add(win);
|
|
|
|
elm_entry_scrollable_set(entry, EINA_TRUE);
|
|
|
|
elm_entry_single_line_set(entry, EINA_TRUE);
|
|
|
|
elm_object_text_set(entry, "Jockey Club Brasileiro");
|
|
|
|
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0);
|
|
|
|
elm_box_pack_end(box, entry);
|
|
|
|
evas_object_show(entry);
|
|
|
|
|
|
|
|
bt = elm_button_add(win);
|
|
|
|
elm_object_text_set(bt, "Route");
|
|
|
|
elm_box_pack_end(box, bt);
|
|
|
|
evas_object_show(bt);
|
|
|
|
evas_object_smart_callback_add(bt, "clicked", _bt_route, &example_data);
|
|
|
|
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
|
|
|
|
|
|
|
|
example_data.map = map;
|
|
|
|
example_data.entry = entry;
|
|
|
|
example_data.route = NULL;
|
|
|
|
example_data.start_lon = -43.175;
|
|
|
|
example_data.start_lat = -22.97;
|
|
|
|
|
|
|
|
elm_map_zoom_set(map, 12);
|
From: Bluezery <ohpowel@gmail.com>
Subject: [E-devel] [Patch][elm_map] Add overlay in the map
I made a overlay APIs in the map. This will replace the marker APIs.
I hope that markers will be deleted before elementary 1.0 release.
This was discussed before in
http://marc.info/?l=enlightenment-devel&m=132685497711772&w=2
Marker only supports layout style overlay. So only icon and image are
suitable for marker. For now on, overlay can support any evas object
and also layout style.
Currently overlay support default, bubble, and class types. And more
types will be added (Polyline, Polygon, scale, POI etc.).
I made a Elm_Map_Overlay opaque structure for handling general overlay
properties (hide, pause, show, etc.) and coordinates or internal
content (icon, content, etc.) for those different types.
Class type overlay is something like mixture of previous marker group
and marker class.
If member overlays in the same class are closed, they will be grouped.
(Same functionality as previous maker group.) The group's properties
and contents are defined by using general overlay functions. (New
functionality)
This defined properties and contents can be be propagated to member
overlays appended to this class. (Same functionality as previous
maker class.)
There are some missing functionalities remained. Group callbacks are
not supported yet in the overlays.
So images inside group bubble can not be shown. I will implement this
feature.
After this patch, I will fix signals and function names before
elementary 1.0 releases.
SVN revision: 68672
2012-03-04 20:18:33 -08:00
|
|
|
elm_map_geo_region_show(map, example_data.start_lon, example_data.start_lat);
|
2011-08-04 15:35:12 -07:00
|
|
|
|
|
|
|
evas_object_resize(win, 512, 512);
|
|
|
|
evas_object_show(win);
|
|
|
|
|
|
|
|
ecore_timer_add(0.5, _nasty_hack, win);
|
|
|
|
|
|
|
|
elm_run();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
ELM_MAIN()
|