2 * Simple Elementary's <b>map widget</b> example, illustrating route and
5 * See stdout/stderr for output. Compile with:
8 * gcc -g `pkg-config --cflags --libs elementary` map_example_03.c -o map_example_03
12 #include <Elementary.h>
14 # include "elementary_config.h"
19 typedef struct _Example_Data
21 Evas_Object *map, *entry;
23 double start_lon, start_lat, dest_lon, dest_lat;
27 Elm_Map_Overlay *route_ovl;
28 >>>>>>> remotes/origin/upstream
31 static Example_Data example_data;
36 _route_loaded(void *data, Evas_Object *obj, void *ev __UNUSED__)
38 Example_Data *example_data = data;
40 example_data->route_ovl = elm_map_overlay_route_add(obj, example_data->route);
41 elm_map_overlay_color_set(example_data->route_ovl, 0, 255, 0, 255);
45 >>>>>>> remotes/origin/upstream
46 _name_loaded(void *data, Evas_Object *obj, void *ev __UNUSED__)
48 Example_Data *example_data = data;
49 Evas_Object *map = obj;
51 if (example_data->route)
52 elm_map_route_remove(example_data->route);
54 elm_map_name_region_get(example_data->name, &(example_data->dest_lon),
55 &(example_data->dest_lat));
57 example_data->route = elm_map_route_add(map, ELM_MAP_ROUTE_TYPE_FOOT,
58 ELM_MAP_ROUTE_METHOD_SHORTEST,
59 example_data->start_lon, example_data->start_lat,
61 example_data->dest_lon, example_data->dest_lat);
62 elm_map_route_color_set(example_data->route, 0, 255, 0, 255);
64 example_data->dest_lon, example_data->dest_lat,
66 >>>>>>> remotes/origin/upstream
70 _bt_route(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
72 Example_Data *example_data = data;
76 map = example_data->map;
77 address = (char *)elm_object_text_get(example_data->entry);
80 example_data->name = elm_map_utils_convert_name_into_coord(map, address);
82 evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
84 example_data->name = elm_map_name_add(map, address, 0, 0, NULL, NULL);
86 evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
87 evas_object_smart_callback_add(map, "route,loaded", _route_loaded, data);
88 >>>>>>> remotes/origin/upstream
92 _bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
95 Evas_Object *map = data;
98 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
99 zoom = elm_map_zoom_get(map);
100 elm_map_zoom_set(map, zoom + 1);
103 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
104 zoom = elm_map_zoom_get(data);
105 elm_map_zoom_set(data, zoom + 1);
106 >>>>>>> remotes/origin/upstream
110 _bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
113 Evas_Object *map = data;
116 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
117 zoom = elm_map_zoom_get(map);
118 elm_map_zoom_set(map, zoom - 1);
121 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
122 zoom = elm_map_zoom_get(data);
123 elm_map_zoom_set(data, zoom - 1);
124 >>>>>>> remotes/origin/upstream
128 _bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
131 Evas_Object *map = data;
132 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FIT);
134 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
135 >>>>>>> remotes/origin/upstream
139 _bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
142 Evas_Object *map = data;
143 elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FILL);
145 elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
146 >>>>>>> remotes/origin/upstream
150 _on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
155 /* FIXME: it shouldn't be required. For unknown reason map won't call
156 * pan_calculate until shot delay time, but then it will take a screenshot
157 * when the map isn't loaded yet (actually it won't be downloaded, because
158 * after the SS it will kill the example). */
160 _nasty_hack(void *data)
162 Evas_Object *o = data;
163 Evas *e = evas_object_evas_get(o);
164 evas_smart_objects_calculate(e);
165 return ECORE_CALLBACK_CANCEL;
169 elm_main(int argc __UNUSED__, char **argv __UNUSED__)
171 Evas_Object *win, *bg, *map, *box, *bt, *entry;
173 win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
174 elm_win_title_set(win, "Map Route Example");
175 evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
177 bg = elm_bg_add(win);
178 elm_win_resize_object_add(win, bg);
179 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
180 evas_object_show(bg);
182 map = elm_map_add(win);
183 elm_win_resize_object_add(win, map);
184 evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
185 evas_object_show(map);
187 box = elm_box_add(win);
188 evas_object_show(box);
190 bt = elm_button_add(win);
191 elm_object_text_set(bt, "+");
192 elm_box_pack_end(box, bt);
193 evas_object_show(bt);
194 evas_object_smart_callback_add(bt, "clicked", _bt_zoom_in, map);
195 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
197 bt = elm_button_add(win);
198 elm_object_text_set(bt, "-");
199 elm_box_pack_end(box, bt);
200 evas_object_show(bt);
201 evas_object_smart_callback_add(bt, "clicked", _bt_zoom_out, map);
202 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
204 bt = elm_button_add(win);
205 elm_object_text_set(bt, "X");
206 elm_box_pack_end(box, bt);
207 evas_object_show(bt);
208 evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fit, map);
209 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
211 bt = elm_button_add(win);
212 elm_object_text_set(bt, "#");
213 elm_box_pack_end(box, bt);
214 evas_object_show(bt);
215 evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
216 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
218 elm_box_horizontal_set(box, EINA_TRUE);
219 elm_win_resize_object_add(win, box);
220 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
221 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0);
223 entry = elm_entry_add(win);
224 elm_entry_scrollable_set(entry, EINA_TRUE);
225 elm_entry_single_line_set(entry, EINA_TRUE);
226 elm_object_text_set(entry, "Jockey Club Brasileiro");
227 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
228 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0);
229 elm_box_pack_end(box, entry);
230 evas_object_show(entry);
232 bt = elm_button_add(win);
233 elm_object_text_set(bt, "Route");
234 elm_box_pack_end(box, bt);
235 evas_object_show(bt);
236 evas_object_smart_callback_add(bt, "clicked", _bt_route, &example_data);
237 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0);
239 example_data.map = map;
240 example_data.entry = entry;
241 example_data.route = NULL;
242 example_data.start_lon = -43.175;
243 example_data.start_lat = -22.97;
246 elm_map_geo_region_show(map, example_data.start_lon, example_data.start_lat);
247 elm_map_zoom_set(map, 12);
249 elm_map_zoom_set(map, 12);
250 elm_map_region_show(map, example_data.start_lon, example_data.start_lat);
251 >>>>>>> remotes/origin/upstream
253 evas_object_resize(win, 512, 512);
254 evas_object_show(win);
256 ecore_timer_add(0.5, _nasty_hack, win);