#include "math.h" #include "Evas.h" #include "Elementary.h" #include "receiver.h" #include "gui.h" #include "util/projection.h" #include "map/smart_map_priv.h" #include "e_smart_map.h" int _h= 600; int _w = 450; int _distance = 1000; int active_map = 0; double own_lat, own_lon; Evas_Object *win, *map; void init_draw_user(Evas_Object *_win, Evas_Object *_map) { win = _win; map = _map; } void enable_map_bubbles() { active_map = 1; } void disable_map_bubbles() { active_map = 0; } void set_dist(int distance) { _distance = distance; } void draw_user(struct position *pos) { int e = NULL; int n = NULL; int own_e = NULL; int own_n = NULL; double old_lat, old_lon, sender_lat, sender_lon; sender_lat = atof(pos->lat); sender_lon = atof(pos->lon); if (sender_lat > 0 && sender_lon > 0) { if (active_map == 1 && test_distance(sender_lat, sender_lon, e, n, own_lat, own_lon, own_e, own_n) == 1) { e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, sender_lat, sender_lon, 0xffffffff); } } free(pos->lat); free(pos->lon); free(pos->nick); free(pos); } int test_distance(double lat, double lon, int e, int n, double own_lat, double own_lon, int own_e, int own_n) { project_latlon(lat, lon, &e, &n, PROJECTION_UTM); project_latlon(own_lat, own_lon, &own_e, &own_n, PROJECTION_UTM); /* printf("e %i \n", e); printf("own_e %i \n", own_e); printf("n %i \n", n); printf("own_n %i \n", own_n); */ if (e != NULL && n !=NULL && own_n != NULL && own_e != NULL) { double x = sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))); /* printf("e %f \n", e); printf("own_e %f \n", own_e); printf("n %f \n", n); printf("own_n %f \n", own_n); printf("e - own_e %f \n", e - own_e); printf("n - own_n %f \n", n - own_n); printf("(e - own_e) * (e - own_e) %f \n", (e - own_e) * (e - own_e)); printf("(n - own_n) * (n - own_n) %f \n", (n - own_n) * (n - own_n)); printf("((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n)) %f \n", ((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))); printf("sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))) %f \n", sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n)))); printf("e - own_e %i || n - own_n %i \n", (e - own_e), (n - own_n)); */ printf("x: %f distance: %i \n", x, _distance); if (x <= _distance && x >= 0) { return 1; } else return 0; } } void set_own_position(double lat, double lon) { own_lat = lat; own_lon = lon; } double get_current_lat() { return own_lat; } double get_current_lon() { return own_lon; }