fixed plugin image size problem
[framework/uifw/elementary.git] / src / bin / test_map.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 #define SOURCE_MAX 10
8 #define MARKER_MAX 1000
9 #define NAME_ENTRY_TEXT "Enter freeform address"
10
11 typedef struct Overlay_Data
12 {
13    const char *file;
14 } Overlay_Data;
15
16 typedef struct Map_Source
17 {
18    Evas_Object *map;
19    Elm_Map_Source_Type type;
20    char *source_name;
21 } Map_Source;
22
23 Overlay_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
24 Overlay_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
25 Overlay_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
26 Overlay_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
27 Overlay_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
28 Overlay_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
29 Overlay_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
30 Overlay_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
31 Overlay_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
32 Overlay_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
33 Overlay_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
34 Overlay_Data parking= {PACKAGE_DATA_DIR"/images/parking.png"};
35 Overlay_Data icon_data = {PACKAGE_DATA_DIR"/images/icon_14.png"};
36
37 static Elm_Map_Overlay *route_start, *route_end, *route_clas;
38 static Elm_Map_Overlay *bubble_img;
39 static Elm_Map_Overlay *bubble_parking;
40 static Elm_Map_Overlay *route_ovl;
41 static Elm_Map_Overlay *line_start, *line_end, *line;
42 static Elm_Map_Overlay *poly;
43 static Elm_Map_Overlay *circle;
44 static Elm_Map_Overlay *scale;
45 static Eina_List *poly_points;
46
47 static Evas_Object *menu, *fs_win;
48 static Elm_Map_Route *route;
49 static Elm_Map_Name *name;
50 static Evas_Object *track;
51 static Evas_Coord down_x, down_y;
52 static Evas_Coord old_x, old_y, old_d;
53 static Map_Source ts[SOURCE_MAX];
54 static Map_Source rs[SOURCE_MAX];
55 static Map_Source ns[SOURCE_MAX];
56
57 static void
58 #ifdef ELM_EMAP
59 my_map_gpx_fileselector_done(void *data, Evas_Object *obj __UNUSED__, void *event_info)
60 #else
61 my_map_gpx_fileselector_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
62 #endif
63 {
64    const char *selected = event_info;
65
66    if (selected)
67      {
68         printf("Selected file: %s\n", selected);
69 #ifdef ELM_EMAP
70         EMap_Route *emap = emap_route_gpx_new(selected);
71         track = elm_map_track_add(data, emap);
72 #else
73         printf("libEMap is required !\n");
74 #endif
75      }
76    evas_object_del(fs_win);
77 }
78
79 static Evas_Object *
80 _route_icon_get(Evas_Object *obj)
81 {
82    Evas_Object *icon = elm_icon_add(obj);
83    elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/bubble.png", NULL);
84    evas_object_show(icon);
85
86    return icon;
87 }
88
89 static Evas_Object *
90 _box_get(Evas_Object *obj, Overlay_Data *data, Elm_Map_Overlay *ovl)
91 {
92    Evas_Object *bx, *img, *label;
93    double lon, lat;
94    char buf[256];
95    bx = elm_box_add(obj);
96    evas_object_show(bx);
97
98    img = evas_object_image_add(evas_object_evas_get(obj));
99    evas_object_image_file_set(img, data->file, NULL);
100    evas_object_image_filled_set(img, EINA_TRUE);
101    evas_object_size_hint_min_set(img, 64, 64);
102    evas_object_show(img);
103    elm_box_pack_end(bx, img);
104
105    label = elm_label_add(bx);
106    elm_map_overlay_region_get(ovl, &lon, &lat);
107    snprintf(buf, sizeof(buf), "%0.4lf %0.4lf", lon, lat);
108    elm_object_text_set(label, buf);
109    evas_object_show(label);
110    elm_box_pack_end(bx, label);
111    return bx;
112 }
113
114 static Evas_Object *
115 _label_get(Evas_Object *obj)
116 {
117    Evas_Object *label;
118    label = elm_label_add(obj);
119    elm_object_text_set(label, "Here is a parking lot.");
120    return label;
121 }
122
123 static Evas_Object *
124 _icon_get(Evas_Object *obj, Overlay_Data *data)
125 {
126    Evas_Object *icon = elm_icon_add(obj);
127    elm_icon_file_set(icon, data->file, NULL);
128    evas_object_show(icon);
129
130    return icon;
131 }
132
133 static void
134 _overlay_hide(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
135 {
136    elm_map_overlay_hide_set(data, EINA_TRUE);
137 }
138
139 static void
140 _overlay_pause(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
141 {
142    elm_map_overlay_paused_set(data, EINA_TRUE);
143 }
144
145 static void
146 _overlay_unpause(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
147 {
148    elm_map_overlay_paused_set(data, EINA_FALSE);
149 }
150
151 static void
152 _overlay_show(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
153 {
154    elm_map_overlay_show(data);
155 }
156
157 static Evas_Object *
158 _btn_box_get(Evas_Object *obj, Elm_Map_Overlay *ovl)
159 {
160    Evas_Object *bx, *btn, *btn2, *btn3, *btn4;
161    bx = elm_box_add(obj);
162    elm_box_horizontal_set(bx, EINA_TRUE);
163    evas_object_show(bx);
164
165    btn = elm_button_add(bx);
166    elm_object_text_set(btn, "Hide");
167    evas_object_smart_callback_add(btn, "clicked", _overlay_hide, ovl);
168    evas_object_show(btn);
169    elm_box_pack_end(bx, btn);
170
171    btn2 = elm_button_add(bx);
172    elm_object_text_set(btn2, "Pause");
173    evas_object_smart_callback_add(btn2, "clicked", _overlay_pause, ovl);
174    evas_object_show(btn2);
175    elm_box_pack_end(bx, btn2);
176
177    btn3 = elm_button_add(bx);
178    elm_object_text_set(btn3, "Unpause");
179    evas_object_smart_callback_add(btn3, "clicked", _overlay_unpause, ovl);
180    evas_object_show(btn3);
181    elm_box_pack_end(bx, btn3);
182
183    btn4 = elm_button_add(bx);
184    elm_object_text_set(btn4, "Show");
185    evas_object_smart_callback_add(btn4, "clicked", _overlay_show, ovl);
186    evas_object_show(btn4);
187    elm_box_pack_end(bx, btn4);
188
189    return bx;
190 }
191
192 static void
193 _bubble_parking_follow(Evas_Object *map)
194 {
195    double lon, lat;
196    Evas_Coord x, y;
197
198    if (bubble_parking)
199      {
200         Elm_Map_Overlay *ovl = elm_map_overlay_data_get(bubble_parking);
201         elm_map_overlay_region_get(ovl, &lon, &lat);
202         elm_map_region_to_canvas_convert(map, lon, lat, &x, &y);
203         elm_map_canvas_to_region_convert(map, x+40, y+50, &lon, &lat);
204         elm_map_overlay_region_set(bubble_parking, lon, lat);
205      }
206 }
207
208 static void
209 _overlays_num_check(Evas_Object *obj)
210 {
211    Evas_Coord x, y, w, h;
212    double lon, lat, max_lon, max_lat, min_lon, min_lat;
213    Eina_List *overlays, *l;
214    Elm_Map_Overlay *ovl;
215    int cnt = 0;
216    int cnt_visible = 0;
217
218    overlays = elm_map_overlays_get(obj);
219    evas_object_geometry_get(obj, &x, &y, &w, &h);
220    elm_map_canvas_to_region_convert(obj, x, y, &min_lon, &max_lat);
221    elm_map_canvas_to_region_convert(obj, x + w, y + h, &max_lon, &min_lat);
222
223    EINA_LIST_FOREACH(overlays, l, ovl)
224      {
225         if (elm_map_overlay_type_get(ovl) == ELM_MAP_OVERLAY_TYPE_CLASS)
226            continue;
227         elm_map_overlay_region_get(ovl, &lon, &lat);
228         if ((min_lon <= lon) && (lon <= max_lon) &&
229             (min_lat <= lat) && (lat <= max_lat))
230           {
231              if (elm_map_overlay_visible_get(ovl)) cnt_visible++;
232              cnt++;
233           }
234      }
235    printf("Number of (visible/total) overlays in viewport: %d/%d\n",
236                    cnt_visible, cnt);
237 }
238
239 static void
240 _map_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
241 {
242    printf("clicked\n");
243 }
244
245 static void
246 _map_clicked_double(void *data __UNUSED__, Evas_Object *obj, void *event_info)
247 {
248    printf("clicked,double\n");
249    double lon, lat;
250    Evas_Event_Mouse_Down *down = event_info;
251    if (!down) return;
252    if (elm_map_zoom_get(obj) < 5) return;
253
254    elm_map_canvas_to_region_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
255    printf("x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
256
257    if (!route_clas)
258      {
259         route_clas = elm_map_overlay_class_add(obj);
260         elm_map_overlay_icon_set(route_clas, _route_icon_get(obj));
261         elm_map_overlay_displayed_zoom_min_set(route_clas, 5);
262      }
263
264    if (route_start && route_end)
265      {
266         elm_map_overlay_del(route_start);
267         elm_map_overlay_del(route_end);
268         elm_map_route_del(route);
269         route_start = NULL;
270         route_end = NULL;
271         route = NULL;
272      }
273
274    if (!route_start) route_start = elm_map_overlay_add(obj, lon, lat);
275    else route_end = elm_map_overlay_add(obj, lon, lat);
276
277    if (route_start && route_end)
278      {
279         double start_lon, start_lat, end_lon, end_lat;
280         elm_map_overlay_class_append(route_clas, route_start);
281         elm_map_overlay_class_append(route_clas, route_end);
282         elm_map_overlay_region_get(route_start, &start_lon, &start_lat);
283         elm_map_overlay_region_get(route_end, &end_lon, &end_lat);
284         route = elm_map_route_add(obj, ELM_MAP_ROUTE_TYPE_MOTOCAR,
285                                      ELM_MAP_ROUTE_METHOD_FASTEST,
286                                      start_lon, start_lat, end_lon, end_lat,
287                                      NULL, NULL);
288      }
289 }
290
291 static void
292 _map_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
293 {
294    printf("press\n");
295 }
296
297 static void
298 _map_longpressed(void *data __UNUSED__, Evas_Object *obj, void *event_info)
299 {
300    if (!event_info) return;
301    double lon, lat;
302    Evas_Event_Mouse_Down *down = (Evas_Event_Mouse_Down *)event_info;
303    elm_map_canvas_to_region_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
304    printf("longpressed, x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
305
306    if (elm_map_zoom_get(obj) < 8) return;
307    if (name) elm_map_name_del(name);
308    name = elm_map_name_add(obj, NULL, lon, lat, NULL, NULL);
309 }
310
311 static void
312 _map_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
313 {
314    double lon, lat;
315    elm_map_region_get(obj, &lon, &lat);
316    printf("scroll, longitude: %f latitude: %f\n", lon, lat);
317    _bubble_parking_follow(obj);
318 }
319
320 static void
321 _map_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
322 {
323    printf("scroll,drag,start\n");
324    evas_object_smart_callback_del(data, "longpressed", _map_longpressed);
325 }
326
327 static void
328 _map_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
329 {
330    printf("scroll,drag,stop\n");
331    evas_object_smart_callback_add(data, "longpressed", _map_longpressed, data);
332    _overlays_num_check(obj);
333 }
334
335 static void
336 _map_anim_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
337 {
338    printf("scroll,anim,start\n");
339 }
340
341 static void
342 _map_anim_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
343 {
344    printf("scroll,anim,stop\n");
345 }
346
347 static void
348 _map_zoom_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
349 {
350    printf("zoom,start\n");
351 }
352
353 static void
354 _map_zoom_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
355 {
356    printf("zoom,stop\n");
357    _overlays_num_check(obj);
358 }
359
360 static void
361 _map_zoom_change(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
362 {
363    printf("zoom,change\n");
364    _bubble_parking_follow(obj);
365 }
366
367 static void
368 _map_loaded(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
369 {
370    printf("loaded\n");
371 }
372
373 static void
374 _map_tile_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
375 {
376    printf("tile,load\n");
377 }
378
379 static void
380 _map_tile_loaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
381 {
382    int try_num, finish_num;
383    elm_map_tile_load_status_get(data, &try_num, &finish_num);
384    printf("tile,loaded: %d / %d\n", finish_num, try_num);
385 }
386
387 static void
388 _map_tile_loaded_fail(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
389 {
390    int try_num, finish_num;
391    elm_map_tile_load_status_get(data, &try_num, &finish_num);
392    printf("tile,loaded,fail: %d / %d\n", finish_num, try_num);
393 }
394
395 static void
396 _map_route_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
397 {
398    printf("route,load\n");
399 }
400
401 static void
402 _map_route_loaded(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
403 {
404    printf("route,loaded\n");
405    double d;
406    const char *w, *n;
407
408    d = elm_map_route_distance_get(route);
409    printf("route distance = %lf km\n", d);
410
411    w = elm_map_route_waypoint_get(route);
412    if (w) printf("[waypoints]\n%s\n", w);
413
414    n = elm_map_route_node_get(route);
415    if (n) printf("[nodes]\n%s\n", n);
416
417    if (route_ovl) elm_map_overlay_del(route_ovl);
418    route_ovl = elm_map_overlay_route_add(obj, route);
419 }
420
421 static void
422 _map_route_loaded_fail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
423 {
424    printf("route,loaded,fail\n");
425 }
426
427 static void
428 _map_name_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
429 {
430    printf("name,load\n");
431 }
432
433 static void
434 _map_name_loaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
435 {
436    printf("name,loaded\n");
437    if (!name) return;
438    double lon, lat;
439    const char *addr = elm_map_name_address_get(name);
440    elm_map_name_region_get(name, &lon, &lat);
441    if (addr)
442      {
443         printf("name of [lon = %lf, lat = %lf] is %s\n", lon, lat, addr);
444         if ((lon != 0.0) && (lat !=0.0))
445           {
446              Eina_Bool b = elm_map_paused_get(data);
447              elm_map_paused_set(data, EINA_TRUE);
448              elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
449              elm_map_zoom_set(data, elm_map_zoom_max_get(data));
450              elm_map_region_show(data, lon, lat);
451              elm_map_paused_set(data, b);
452           }
453      }
454
455    elm_map_name_del(name);
456    name = NULL;
457 }
458
459 static void
460 _map_name_loaded_fail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
461 {
462    printf("name,loaded,fail\n");
463 }
464
465 static void
466 _src_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
467 {
468    Map_Source *s = data;
469
470    if (!s) return;
471    elm_map_source_set(s->map, s->type, s->source_name);
472 }
473
474 static void
475 _show_urmatt(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
476 {
477    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
478    if (elm_map_zoom_get(data) < 12) elm_map_zoom_set(data, 12);
479    elm_map_region_show(data,7.325201, 48.526813);
480 }
481
482 static void
483 _bring_seoul(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
484 {
485    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
486    if (elm_map_zoom_get(data) < 12) elm_map_zoom_set(data, 12);
487    elm_map_region_bring_in(data, 126.977969, 37.566535);
488 }
489
490 static void
491 _paused_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
492 {
493    elm_map_paused_set(data, EINA_TRUE);
494 }
495
496 static void
497 _paused_unset(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
498 {
499    elm_map_paused_set(data, EINA_FALSE);
500 }
501
502 static void
503 _zoom_in(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
504 {
505    int zoom;
506
507    zoom = elm_map_zoom_get(data) + 1;
508    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
509    elm_map_zoom_set(data, zoom);
510 }
511
512 static void
513 _zoom_out(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
514 {
515    int zoom;
516
517    zoom = elm_map_zoom_get(data) - 1;
518    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
519    elm_map_zoom_set(data, zoom);
520 }
521
522 static void
523 _zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
524 {
525    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
526 }
527
528 static void
529 _zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
530 {
531    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
532 }
533
534 static void
535 _zoom_manual(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
536 {
537    elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
538 }
539
540 static void
541 _track_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
542 {
543    Evas_Object *fs, *vbox, *hbox, *sep;
544    char *path = NULL;
545
546    fs_win = elm_win_util_standard_add("fileselector", "File Selector");
547    elm_win_autodel_set(fs_win, 1);
548
549    vbox = elm_box_add(fs_win);
550    elm_win_resize_object_add(fs_win, vbox);
551    evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
552    evas_object_show(vbox);
553
554    fs = elm_fileselector_add(fs_win);
555    elm_fileselector_is_save_set(fs, EINA_TRUE);
556    elm_fileselector_expandable_set(fs, EINA_FALSE);
557    path = getenv("HOME");
558    //if "HOME" is not available, set current dir. path
559    if (!path)
560      path = ".";
561    elm_fileselector_path_set(fs, path);
562    evas_object_size_hint_weight_set(fs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
563    evas_object_size_hint_align_set(fs, EVAS_HINT_FILL, EVAS_HINT_FILL);
564    elm_box_pack_end(vbox, fs);
565    evas_object_show(fs);
566
567    evas_object_smart_callback_add(fs, "done", my_map_gpx_fileselector_done, data);
568
569    sep = elm_separator_add(fs_win);
570    elm_separator_horizontal_set(sep, EINA_TRUE);
571    elm_box_pack_end(vbox, sep);
572    evas_object_show(sep);
573
574    hbox = elm_box_add(fs_win);
575    elm_box_horizontal_set(hbox, EINA_TRUE);
576    elm_box_pack_end(vbox, hbox);
577    evas_object_show(hbox);
578
579    evas_object_resize(fs_win, 240, 350);
580    evas_object_show(fs_win);
581 }
582
583
584 static void
585 _track_remove(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
586 {
587    elm_map_track_remove(data, track);
588 }
589
590 static void
591 _rotate_cw(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
592 {
593    double d;
594    Evas_Coord x, y, w, h;
595    float half_w, half_h;
596    evas_object_geometry_get(data, &x, &y, &w, &h);
597    half_w = (float)w * 0.5;
598    half_h = (float)h * 0.5;
599
600    elm_map_rotate_get(data, &d, NULL, NULL);
601    d += 15.0;
602    elm_map_rotate_set(data, d, x + half_w, y + half_h);
603 }
604
605 static void
606 _rotate_ccw(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
607 {
608    double d;
609    Evas_Coord x, y, w, h;
610    float half_w, half_h;
611    evas_object_geometry_get(data, &x, &y, &w, &h);
612    half_w = (float)w * 0.5;
613    half_h = (float)h * 0.5;
614
615    elm_map_rotate_get(data, &d, NULL, NULL);
616    d -= 15.0;
617    elm_map_rotate_set(data, d, x + half_w, y + half_h);
618 }
619
620 static void
621 _rotate_reset(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
622 {
623    Evas_Coord x, y, w, h;
624    float half_w, half_h;
625    evas_object_geometry_get(data, &x, &y, &w, &h);
626    half_w = (float)w * 0.5;
627    half_h = (float)h * 0.5;
628
629    elm_map_rotate_set(data, 0.0, x + half_w, y + half_h);
630 }
631
632 static void
633 _wheel_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
634 {
635    elm_map_wheel_disabled_set(data, EINA_TRUE);
636 }
637
638 static void
639 _wheel_enable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
640 {
641    elm_map_wheel_disabled_set(data, EINA_FALSE);
642 }
643
644 static void
645 _zoom_min_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
646 {
647    elm_map_zoom_min_set(data, 1);
648 }
649
650 static void
651 _zoom_max_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
652 {
653    elm_map_zoom_max_set(data, 10);
654 }
655
656 static void
657 _line_add(void *data, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
658 {
659    double lon, lat;
660
661    elm_map_canvas_to_region_convert(data, down_x, down_y, &lon, &lat);
662    printf("line marker: %d %d %lf %lf\n", down_x, down_y, lon, lat);
663    if (line_start && line_end)
664      {
665         elm_map_overlay_del(line_start);
666         elm_map_overlay_del(line_end);
667         elm_map_overlay_del(line);
668         line_start = NULL;
669         line_end = NULL;
670         line = NULL;
671      }
672    if (!line_start) line_start = elm_map_overlay_add(data, lon, lat);
673    else if (!line_end) line_end = elm_map_overlay_add(data, lon, lat);
674
675    if (line_start && line_end)
676      {
677         double flon, flat, tlon, tlat;
678         elm_map_overlay_region_get(line_start, &flon, &flat);
679         elm_map_overlay_region_get(line_end, &tlon, &tlat);
680         line = elm_map_overlay_line_add(data, flon, flat, tlon, tlat);
681         printf("line add: (%lf, %lf) --> (%lf, %lf)\n", flon, flat, tlon, tlat);
682      }
683 }
684
685 static void
686 _poly_add(void *data, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
687 {
688    double lon, lat;
689
690    elm_map_canvas_to_region_convert(data, down_x, down_y, &lon, &lat);
691    printf("%d %d %lf %lf\n", down_x, down_y, lon, lat);
692
693    if (!poly) poly = elm_map_overlay_polygon_add(data);
694    poly_points = eina_list_append(poly_points,
695                                   elm_map_overlay_add(data, lon, lat));
696    elm_map_overlay_polygon_region_add(poly, lon, lat);
697 }
698
699 static void
700 _poly_clear(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
701 {
702    Elm_Map_Overlay *ovl;
703    if (poly) elm_map_overlay_del(poly);
704    EINA_LIST_FREE(poly_points, ovl) elm_map_overlay_del(ovl);
705    poly = NULL;
706    poly_points = NULL;
707 }
708
709 static void
710 _circle_add(void *data, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
711 {
712    double radius = 100;
713    double lon, lat;
714
715    if (circle) elm_map_overlay_del(circle);
716    elm_map_canvas_to_region_convert(data, down_x, down_y, &lon, &lat);
717    circle = elm_map_overlay_circle_add(data, lon, lat, radius);
718 }
719
720 static void
721 _scale_add(void *data, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
722 {
723    if (scale) elm_map_overlay_del(scale);
724    scale = elm_map_overlay_scale_add(data, down_x, down_y);
725 }
726
727 static void
728 _submenu_src_add(void *data, Elm_Object_Item *parent)
729 {
730    int idx;
731    const char **tile_srcs;
732    const char **route_srcs;
733    const char **name_srcs;
734
735    if ((!data) || (!parent)) return;
736
737    tile_srcs = elm_map_sources_get(data, ELM_MAP_SOURCE_TYPE_TILE);
738    route_srcs = elm_map_sources_get(data, ELM_MAP_SOURCE_TYPE_ROUTE);
739    name_srcs = elm_map_sources_get(data, ELM_MAP_SOURCE_TYPE_NAME);
740
741    for (idx = 0; tile_srcs[idx]; idx++)
742      {
743         if (idx >= SOURCE_MAX) break;
744         ts[idx].map = data;
745         ts[idx].type = ELM_MAP_SOURCE_TYPE_TILE;
746         ts[idx].source_name = strdup(tile_srcs[idx]);
747         elm_menu_item_add(menu, parent, "", tile_srcs[idx], _src_set, &ts[idx]);
748      }
749    for (idx = 0; route_srcs[idx]; idx++)
750      {
751         if (idx >= SOURCE_MAX) break;
752         rs[idx].map = data;
753         rs[idx].type = ELM_MAP_SOURCE_TYPE_ROUTE;
754         rs[idx].source_name = strdup(route_srcs[idx]);
755         elm_menu_item_add(menu, parent, "", route_srcs[idx], _src_set, &rs[idx]);
756      }
757    for (idx = 0; name_srcs[idx]; idx++)
758      {
759         if (idx >= SOURCE_MAX) break;
760         ns[idx].map = data;
761         ns[idx].type = ELM_MAP_SOURCE_TYPE_NAME;
762         ns[idx].source_name = strdup(name_srcs[idx]);
763         elm_menu_item_add(menu, parent, "", name_srcs[idx], _src_set, &ns[idx]);
764      }
765 }
766
767 static void
768 _submenu_move_add(void *data, Elm_Object_Item *parent)
769 {
770    if ((!data) || (!parent)) return;
771    elm_menu_item_add(menu, parent, NULL, "Show Urmatt", _show_urmatt, data);
772    elm_menu_item_add(menu, parent, NULL, "Bring Seoul", _bring_seoul, data);
773
774 }
775
776 static void
777 _submenu_zoom_add(void *data, Elm_Object_Item *parent)
778 {
779    if ((!data) || (!parent)) return;
780    elm_menu_item_add(menu, parent, NULL, "Zoom +", _zoom_in, data);
781    elm_menu_item_add(menu, parent, NULL, "Zoom -", _zoom_out, data);
782    elm_menu_item_add(menu, parent, NULL, "Zoom Fit", _zoom_fit, data);
783    elm_menu_item_add(menu, parent, NULL, "Zoom Fill", _zoom_fill, data);
784    elm_menu_item_add(menu, parent, NULL, "Zoom Manual", _zoom_manual, data);
785    elm_menu_item_add(menu, parent, NULL, "Zoom Min to 1", _zoom_min_set, data);
786    elm_menu_item_add(menu, parent, NULL, "Zoom Max to 10", _zoom_max_set, data);
787 }
788
789 static void
790 _submenu_prop_add(void *data, Elm_Object_Item *parent)
791 {
792    if ((!data) || (!parent)) return;
793    elm_menu_item_add(menu, parent, NULL, "Paused Set", _paused_set, data);
794    elm_menu_item_add(menu, parent, NULL, "Paused Unset", _paused_unset, data);
795    elm_menu_item_add(menu, parent, NULL, "Rotate CW", _rotate_cw, data);
796    elm_menu_item_add(menu, parent, NULL, "Rotate CCW", _rotate_ccw, data);
797    elm_menu_item_add(menu, parent, NULL, "Reset Rotate", _rotate_reset, data);
798    elm_menu_item_add(menu, parent, NULL, "Disable Wheel", _wheel_disable, data);
799    elm_menu_item_add(menu, parent, NULL, "Enable Wheel", _wheel_enable, data);
800 }
801
802 static void
803 _submenu_track_add(void *data, Elm_Object_Item *parent)
804 {
805    if ((!data) || (!parent)) return;
806    elm_menu_item_add(menu, parent, NULL, "Add Track", _track_add, data);
807    elm_menu_item_add(menu, parent, NULL, "Remove Track", _track_remove, data);
808 }
809
810 static void
811 _submenu_ovl_add(void *data, Elm_Object_Item *parent)
812 {
813    if ((!data) || (!parent)) return;
814    elm_menu_item_add(menu, parent, NULL, "Add line", _line_add, data);
815    elm_menu_item_add(menu, parent, NULL, "Add polygon", _poly_add, data);
816    elm_menu_item_add(menu, parent, NULL, "Clear polygon", _poly_clear, data);
817    elm_menu_item_add(menu, parent, NULL, "Add circle", _circle_add, data);
818    elm_menu_item_add(menu, parent, NULL, "Add scale", _scale_add, data);
819 }
820
821 static void
822 _map_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
823 {
824    Evas_Event_Mouse_Down *down = event_info;
825    Elm_Object_Item *menu_it;
826    if (!down) return;
827
828    if (down->button == 2)
829      {
830         old_x = down->canvas.x;
831         old_y = down->canvas.y;
832         old_d = 0.0;
833      }
834    else if (down->button == 3)
835      {
836         down_x = down->canvas.x;
837         down_y = down->canvas.y;
838         menu = elm_menu_add(obj);
839         menu_it = elm_menu_item_add(menu, NULL, "", "Source", NULL, NULL);
840         _submenu_src_add(data, menu_it);
841         menu_it = elm_menu_item_add(menu, NULL, "", "Move", NULL, NULL);
842         _submenu_move_add(data, menu_it);
843         menu_it = elm_menu_item_add(menu, NULL, "", "Zoom", NULL, NULL);
844         _submenu_zoom_add(data, menu_it);
845         menu_it = elm_menu_item_add(menu, NULL, "", "Prop", NULL, NULL);
846         _submenu_prop_add(data, menu_it);
847         menu_it = elm_menu_item_add(menu, NULL, "", "Track", NULL, NULL);
848         _submenu_track_add(data, menu_it);
849         menu_it = elm_menu_item_add(menu, NULL, "", "Overlay", NULL, NULL);
850         _submenu_ovl_add(data, menu_it);
851
852          elm_menu_move(menu, down->canvas.x, down->canvas.y);
853          evas_object_show(menu);
854      }
855 }
856
857 static void
858 _map_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
859 {
860    Evas_Event_Mouse_Move *move = event_info;
861    Evas_Coord x, y, w, h;
862    float half_w, half_h;
863    int d, d_diff;
864    double cur_d;
865    if (!move) return;
866
867    if (move->buttons == 2)
868      {
869         evas_object_geometry_get(data, &x, &y, &w, &h);
870         half_w = (float)w * 0.5;
871         half_h = (float)h * 0.5;
872         elm_map_rotate_get(data, &cur_d, NULL, NULL);
873
874         d = move->cur.canvas.x - old_x;
875         if (!old_d) old_d = d;
876         else
877           {
878              d_diff = old_d - d;
879              if (d_diff > 0)
880                {
881                   old_d --;
882                   cur_d += 1.0;
883                }
884              else if (d_diff < 0)
885                {
886                   old_d ++;
887                   cur_d -= 1.0;
888                }
889              old_d = d;
890              elm_map_rotate_set(data, cur_d, x + half_w, y + half_h);
891           }
892      }
893 }
894
895 static void
896 _map_mouse_up(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
897 {
898    Evas_Event_Mouse_Up *up = event_info;
899    if (!up) return;
900
901    if (up->button == 2)
902      {
903         old_x = 0;
904         old_y = 0;
905      }
906 }
907
908 static void
909 _overlay_cb(void *data __UNUSED__, Evas_Object *map, void *ev)
910 {
911    printf("Overlay clicked: ");
912    Elm_Map_Overlay *overlay = ev;
913    Overlay_Data *od;
914    Elm_Map_Overlay_Type type = elm_map_overlay_type_get(overlay);
915
916    if (type != ELM_MAP_OVERLAY_TYPE_GROUP &&
917        type != ELM_MAP_OVERLAY_TYPE_DEFAULT) return;
918
919    if (!bubble_img)  bubble_img = elm_map_overlay_bubble_add(map);
920    elm_map_overlay_bubble_follow(bubble_img, overlay);
921    elm_map_overlay_bubble_content_clear(bubble_img);
922
923    if (type == ELM_MAP_OVERLAY_TYPE_GROUP)
924      {
925         Eina_List *l;
926         Elm_Map_Overlay *memb;
927         Eina_List *members = elm_map_overlay_group_members_get(overlay);
928         printf("Group Members Num: %d\n", eina_list_count(members));
929         EINA_LIST_FOREACH(members, l, memb)
930           {
931              od = elm_map_overlay_data_get(memb);
932              if (od)
933                 elm_map_overlay_bubble_content_append(bubble_img,
934                                                       _box_get(map, od, memb));
935           }
936       }
937      else
938      {
939         od = elm_map_overlay_data_get(overlay);
940         if (od)
941            elm_map_overlay_bubble_content_append(bubble_img,
942                                                  _box_get(map, od, overlay));
943         elm_map_overlay_bubble_content_append(bubble_img,
944                                               _btn_box_get(map, overlay));
945      }
946 }
947
948 static void
949 _parking_cb(void *data __UNUSED__, Evas_Object *map, Elm_Map_Overlay *ovl)
950 {
951    double lon, lat;
952    Evas_Coord x, y;
953    elm_map_overlay_region_get(ovl, &lon, &lat);
954    elm_map_region_to_canvas_convert(map, lon, lat, &x, &y);
955    printf("Parking clicked: %lf %lf %d %d\n", lon, lat, x, y);
956
957    elm_map_canvas_to_region_convert(map, x+40, y+50, &lon, &lat);
958    if (!bubble_parking)
959      {
960         Evas_Object *bubble, *label;
961         bubble = elm_bubble_add(map);
962         elm_bubble_pos_set(bubble, ELM_BUBBLE_POS_TOP_LEFT);
963         elm_object_text_set(bubble, "Overlay object");
964         elm_object_part_text_set(bubble, "info", "Bubble is overlayed");
965
966         label = elm_label_add(bubble);
967         elm_object_text_set(label, "Parking Here !!");
968         evas_object_show(label);
969         elm_object_content_set(bubble, label);
970
971         evas_object_resize(bubble, 125, 50);
972         evas_object_show(bubble);
973
974         bubble_parking = elm_map_overlay_add(map, lon, lat);
975         elm_map_overlay_content_set(bubble_parking, bubble);
976      }
977    else elm_map_overlay_region_set(bubble_parking, lon, lat);
978    elm_map_overlay_data_set(bubble_parking, ovl);
979 }
980
981 static void
982 _del_map(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
983 {
984    if (route_start)    elm_map_overlay_del(route_start);
985    if (route_end)      elm_map_overlay_del(route_end);
986    if (route_clas)     elm_map_overlay_del(route_clas);
987    if (bubble_img)     elm_map_overlay_del(bubble_img);
988    if (bubble_parking) elm_map_overlay_del(bubble_parking);
989    if (route_ovl)      elm_map_overlay_del(route_ovl);
990    route_start = NULL;
991    route_end = NULL;
992    route_clas = NULL;
993    bubble_img = NULL;
994    bubble_parking = NULL;
995    route_ovl = NULL;
996
997    if (route) elm_map_route_del(route);
998    if (name) elm_map_name_del(name);
999    route = NULL;
1000    name = NULL;
1001 }
1002
1003 void
1004 test_map(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1005 {
1006    Evas_Object *win, *map;
1007    int idx = 0;
1008    const char **tile_srcs;
1009    const char **route_srcs;
1010    const char **name_srcs;
1011
1012    win = elm_win_util_standard_add("map", "Map");
1013    elm_win_autodel_set(win, EINA_TRUE);
1014
1015    map = elm_map_add(win);
1016    if (map)
1017      {
1018         Elm_Map_Overlay *ovl_1, *ovl_2, *ovl_3, *ovl_4, *ovl_5, *ovl_6;
1019         Elm_Map_Overlay *ovl_7, *ovl_8, *ovl_9, *ovl_10, *ovl_11;
1020         Elm_Map_Overlay *parking1, *parking2, *parking3, *parking4, *parking5;
1021         Elm_Map_Overlay *grp1, *grp2, *grp_parking;
1022
1023         evas_object_event_callback_add(map, EVAS_CALLBACK_DEL, _del_map, NULL);
1024
1025         srand(time(NULL));
1026
1027         tile_srcs = elm_map_sources_get(map, ELM_MAP_SOURCE_TYPE_TILE);
1028         route_srcs = elm_map_sources_get(map, ELM_MAP_SOURCE_TYPE_ROUTE);
1029         name_srcs = elm_map_sources_get(map, ELM_MAP_SOURCE_TYPE_NAME);
1030
1031         if (!tile_srcs) return;
1032         printf("Tile sources [ ");
1033         for (idx = 0; tile_srcs[idx] ; idx++) printf("%s, ", tile_srcs[idx]);
1034         printf("]\n");
1035         if (!route_srcs) return;
1036         printf("Route sources [ ");
1037         for (idx = 0; route_srcs[idx] ; idx++) printf("%s, ", route_srcs[idx]);
1038         printf("]\n");
1039         if (!name_srcs) return;
1040         printf("Name sources [ ");
1041         for (idx = 0; name_srcs[idx] ; idx++) printf("%s, ", name_srcs[idx]);
1042         printf("]\n");
1043
1044         evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1045         elm_win_resize_object_add(win, map);
1046         evas_object_data_set(map, "window", win);
1047
1048         evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_DOWN,
1049                                        _map_mouse_down, map);
1050         evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_MOVE,
1051                                        _map_mouse_move, map);
1052         evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_UP,
1053                                        _map_mouse_up, map);
1054
1055         evas_object_smart_callback_add(map, "clicked", _map_clicked, map);
1056         evas_object_smart_callback_add(map, "clicked,double", _map_clicked_double, map);
1057         evas_object_smart_callback_add(map, "press", _map_press, map);
1058         evas_object_smart_callback_add(map, "longpressed", _map_longpressed, map);
1059         evas_object_smart_callback_add(map, "scroll", _map_scroll, map);
1060         evas_object_smart_callback_add(map, "scroll,drag,start", _map_drag_start, map);
1061         evas_object_smart_callback_add(map, "scroll,drag,stop", _map_drag_stop, map);
1062         evas_object_smart_callback_add(map, "scroll,anim,start", _map_anim_start, map);
1063         evas_object_smart_callback_add(map, "scroll,anim,stop", _map_anim_stop, map);
1064         evas_object_smart_callback_add(map, "zoom,start", _map_zoom_start, map);
1065         evas_object_smart_callback_add(map, "zoom,stop", _map_zoom_stop, map);
1066         evas_object_smart_callback_add(map, "zoom,change", _map_zoom_change, map);
1067         evas_object_smart_callback_add(map, "loaded", _map_loaded, map);
1068         evas_object_smart_callback_add(map, "tile,load", _map_tile_load, map);
1069         evas_object_smart_callback_add(map, "tile,loaded", _map_tile_loaded, map);
1070         evas_object_smart_callback_add(map, "tile,loaded,fail", _map_tile_loaded_fail, map);
1071         evas_object_smart_callback_add(map, "route,load", _map_route_load, map);
1072         evas_object_smart_callback_add(map, "route,loaded", _map_route_loaded, map);
1073         evas_object_smart_callback_add(map, "route,loaded,fail", _map_route_loaded_fail, map);
1074         evas_object_smart_callback_add(map, "name,load", _map_name_load, map);
1075         evas_object_smart_callback_add(map, "name,loaded", _map_name_loaded, map);
1076         evas_object_smart_callback_add(map, "name,loaded,fail", _map_name_loaded_fail, map);
1077         evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, map);
1078
1079         // Create Overlays
1080         ovl_1 = elm_map_overlay_add(map, 2.352, 48.857);
1081         elm_map_overlay_color_set(ovl_1, 0x00, 0xfa, 0x9a, 0xff);
1082         elm_map_overlay_displayed_zoom_min_set(ovl_1, 5);
1083         ovl_2 = elm_map_overlay_add(map, 3, 48.857);
1084         elm_map_overlay_color_set(ovl_2, 0xff, 0xd7, 0x00, 0xff);
1085         elm_map_overlay_displayed_zoom_min_set(ovl_2, 4);
1086         ovl_3 = elm_map_overlay_add(map, 2.352, 49);
1087         elm_map_overlay_displayed_zoom_min_set(ovl_3, 3);
1088         ovl_4 = elm_map_overlay_add(map, 7.31451, 48.857127);
1089         ovl_5 = elm_map_overlay_add(map, 7.314704, 48.857119);
1090         ovl_6 = elm_map_overlay_add(map, 7.31432, 48.856785);
1091         ovl_7 = elm_map_overlay_add(map, 7.3148, 48.85725);
1092         ovl_8 = elm_map_overlay_add(map, 7.316445, 48.8572210000694);
1093         ovl_9 = elm_map_overlay_add(map, 7.316527000125, 48.85609);
1094         ovl_10 = elm_map_overlay_add(map, 7.3165409990833, 48.856078);
1095         ovl_11 = elm_map_overlay_add(map, 7.319812, 48.856561);
1096         elm_map_overlay_data_set(ovl_1, &data1);
1097         elm_map_overlay_data_set(ovl_2, &data2);
1098         elm_map_overlay_data_set(ovl_3, &data3);
1099         elm_map_overlay_data_set(ovl_4, &data4);
1100         elm_map_overlay_data_set(ovl_5, &data5);
1101         elm_map_overlay_data_set(ovl_6, &data6);
1102         elm_map_overlay_data_set(ovl_7, &data7);
1103         elm_map_overlay_data_set(ovl_8, &data8);
1104         elm_map_overlay_data_set(ovl_9, &data9);
1105         elm_map_overlay_data_set(ovl_10, &data10);
1106         elm_map_overlay_data_set(ovl_11, &data11);
1107
1108         // Append overlays to groups
1109         grp1 = elm_map_overlay_class_add(map);
1110         elm_map_overlay_class_zoom_max_set(grp1, 6);
1111         elm_map_overlay_class_append(grp1, ovl_1);
1112         elm_map_overlay_class_append(grp1, ovl_2);
1113         elm_map_overlay_class_append(grp1, ovl_3);
1114         elm_map_overlay_class_append(grp1, ovl_4);
1115         elm_map_overlay_class_append(grp1, ovl_5);
1116         elm_map_overlay_class_append(grp1, ovl_6);
1117
1118         // Append overlays to groups
1119         grp2 = elm_map_overlay_class_add(map);
1120         elm_map_overlay_displayed_zoom_min_set(grp2, 9);
1121         elm_map_overlay_class_append(grp2, ovl_7);
1122         elm_map_overlay_class_append(grp2, ovl_8);
1123         elm_map_overlay_class_append(grp2, ovl_9);
1124         elm_map_overlay_class_append(grp2, ovl_10);
1125         elm_map_overlay_class_append(grp2, ovl_11);
1126
1127         // Create overlays
1128         parking1 = elm_map_overlay_add(map, 127.04871, 37.25730);
1129         parking2 = elm_map_overlay_add(map, 127.05578, 37.25545);
1130         parking3 = elm_map_overlay_add(map, 127.05515, 37.25439);
1131         parking4 = elm_map_overlay_add(map, 127.05328, 37.25721);
1132         elm_map_overlay_icon_set(parking4, _icon_get(map, &icon_data));
1133         parking5 = elm_map_overlay_add(map, 127.05431, 37.25873);
1134         elm_map_overlay_content_set(parking5, _label_get(map));
1135         elm_map_overlay_get_cb_set(parking1, _parking_cb, NULL);
1136         elm_map_overlay_get_cb_set(parking2, _parking_cb, NULL);
1137         elm_map_overlay_get_cb_set(parking3, _parking_cb, NULL);
1138         elm_map_overlay_get_cb_set(parking4, _parking_cb, NULL);
1139         elm_map_overlay_get_cb_set(parking5, _parking_cb, NULL);
1140
1141         // Append overlays to groups
1142         grp_parking = elm_map_overlay_class_add(map);
1143         elm_map_overlay_icon_set(grp_parking, _icon_get(map, &parking));
1144         elm_map_overlay_get_cb_set(grp_parking, _parking_cb, NULL);
1145         elm_map_overlay_class_append(grp_parking, parking1);
1146         elm_map_overlay_class_append(grp_parking, parking2);
1147         elm_map_overlay_class_append(grp_parking, parking3);
1148         elm_map_overlay_class_append(grp_parking, parking4);
1149         elm_map_overlay_class_append(grp_parking, parking5);
1150
1151         evas_object_show(map);
1152      }
1153
1154    evas_object_resize(win, 800, 800);
1155    evas_object_show(win);
1156 }
1157 #endif