1664 |
#endif |
#endif |
1665 |
} |
} |
1666 |
|
|
1667 |
static GObject * |
static void |
1668 |
osm_gps_map_constructor (GType gtype, guint n_properties, GObjectConstructParam *properties) |
osm_gps_map_setup(OsmGpsMapPrivate *priv) { |
|
{ |
|
|
GObject *object; |
|
|
OsmGpsMapPrivate *priv; |
|
|
OsmGpsMap *map; |
|
1669 |
const char *uri; |
const char *uri; |
1670 |
|
|
|
//Always chain up to the parent constructor |
|
|
object = G_OBJECT_CLASS(osm_gps_map_parent_class)->constructor(gtype, n_properties, properties); |
|
|
map = OSM_GPS_MAP(object); |
|
|
priv = OSM_GPS_MAP_PRIVATE(object); |
|
|
|
|
1671 |
//user can specify a map source ID, or a repo URI as the map source |
//user can specify a map source ID, or a repo URI as the map source |
1672 |
uri = osm_gps_map_source_get_repo_uri(OSM_GPS_MAP_SOURCE_NULL); |
uri = osm_gps_map_source_get_repo_uri(OSM_GPS_MAP_SOURCE_NULL); |
1673 |
if ( (priv->map_source == 0) || (strcmp(priv->repo_uri, uri) == 0) ) { |
if ( (priv->map_source == 0) || (strcmp(priv->repo_uri, uri) == 0) ) { |
1700 |
priv->cache_dir = g_strdup_printf("%s%c%s", priv->tile_dir, G_DIR_SEPARATOR, fname); |
priv->cache_dir = g_strdup_printf("%s%c%s", priv->tile_dir, G_DIR_SEPARATOR, fname); |
1701 |
g_debug("Adjusting cache dir %s -> %s", priv->tile_dir, priv->cache_dir); |
g_debug("Adjusting cache dir %s -> %s", priv->tile_dir, priv->cache_dir); |
1702 |
} |
} |
1703 |
|
} |
1704 |
|
|
1705 |
|
static GObject * |
1706 |
|
osm_gps_map_constructor (GType gtype, guint n_properties, GObjectConstructParam *properties) |
1707 |
|
{ |
1708 |
|
//Always chain up to the parent constructor |
1709 |
|
GObject *object = |
1710 |
|
G_OBJECT_CLASS(osm_gps_map_parent_class)->constructor(gtype, n_properties, properties); |
1711 |
|
|
1712 |
inspect_map_uri(map); |
osm_gps_map_setup(OSM_GPS_MAP_PRIVATE(object)); |
1713 |
|
|
1714 |
|
inspect_map_uri(OSM_GPS_MAP(object)); |
1715 |
|
|
1716 |
return object; |
return object; |
1717 |
} |
} |
1876 |
/* flush the ram cache */ |
/* flush the ram cache */ |
1877 |
g_hash_table_remove_all(priv->tile_cache); |
g_hash_table_remove_all(priv->tile_cache); |
1878 |
|
|
1879 |
//check if the source given is valid |
osm_gps_map_setup(priv); |
1880 |
const char *uri = osm_gps_map_source_get_repo_uri(priv->map_source); |
|
1881 |
if (uri) { |
inspect_map_uri(map); |
|
g_debug("Setting map source from ID"); |
|
|
g_free(priv->repo_uri); |
|
|
|
|
|
priv->repo_uri = g_strdup(uri); |
|
|
priv->image_format = g_strdup( |
|
|
osm_gps_map_source_get_image_format(priv->map_source)); |
|
|
priv->max_zoom = osm_gps_map_source_get_max_zoom(priv->map_source); |
|
|
priv->min_zoom = osm_gps_map_source_get_min_zoom(priv->map_source); |
|
|
} |
|
|
|
|
|
/* create a new disk cache path */ |
|
|
const char *fname = osm_gps_map_source_get_friendly_name(priv->map_source); |
|
|
if(!fname) fname = "_unknown_"; |
|
|
|
|
|
if (priv->tile_dir) { |
|
|
//the new cachedir is the given cache dir + the friendly name of the repo_uri |
|
|
priv->cache_dir = |
|
|
g_strdup_printf("%s%c%s", priv->tile_dir, G_DIR_SEPARATOR, fname); |
|
|
g_debug("Adjusting cache dir %s -> %s", priv->tile_dir, priv->cache_dir); |
|
|
} |
|
1882 |
|
|
1883 |
/* adjust zoom if necessary */ |
/* adjust zoom if necessary */ |
1884 |
if(priv->map_zoom > priv->max_zoom) |
if(priv->map_zoom > priv->max_zoom) |
1887 |
if(priv->map_zoom < priv->min_zoom) |
if(priv->map_zoom < priv->min_zoom) |
1888 |
osm_gps_map_set_zoom(map, priv->min_zoom); |
osm_gps_map_set_zoom(map, priv->min_zoom); |
1889 |
|
|
|
inspect_map_uri(map); |
|
|
|
|
1890 |
} } break; |
} } break; |
1891 |
case PROP_IMAGE_FORMAT: |
case PROP_IMAGE_FORMAT: |
1892 |
priv->image_format = g_value_dup_string (value); |
priv->image_format = g_value_dup_string (value); |
2024 |
case OSD_UP: |
case OSD_UP: |
2025 |
priv->map_y -= step; |
priv->map_y -= step; |
2026 |
priv->center_coord_set = FALSE; |
priv->center_coord_set = FALSE; |
2027 |
|
g_object_set(G_OBJECT(widget), "auto-center", FALSE, NULL); |
2028 |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
2029 |
break; |
break; |
2030 |
|
|
2031 |
case OSD_DOWN: |
case OSD_DOWN: |
2032 |
priv->map_y += step; |
priv->map_y += step; |
2033 |
priv->center_coord_set = FALSE; |
priv->center_coord_set = FALSE; |
2034 |
|
g_object_set(G_OBJECT(widget), "auto-center", FALSE, NULL); |
2035 |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
2036 |
break; |
break; |
2037 |
|
|
2038 |
case OSD_LEFT: |
case OSD_LEFT: |
2039 |
priv->map_x -= step; |
priv->map_x -= step; |
2040 |
priv->center_coord_set = FALSE; |
priv->center_coord_set = FALSE; |
2041 |
|
g_object_set(G_OBJECT(widget), "auto-center", FALSE, NULL); |
2042 |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
2043 |
break; |
break; |
2044 |
|
|
2045 |
case OSD_RIGHT: |
case OSD_RIGHT: |
2046 |
priv->map_x += step; |
priv->map_x += step; |
2047 |
priv->center_coord_set = FALSE; |
priv->center_coord_set = FALSE; |
2048 |
|
g_object_set(G_OBJECT(widget), "auto-center", FALSE, NULL); |
2049 |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
osm_gps_map_map_redraw_idle(OSM_GPS_MAP(widget)); |
2050 |
break; |
break; |
2051 |
|
|
2514 |
case OSM_GPS_MAP_SOURCE_NULL: |
case OSM_GPS_MAP_SOURCE_NULL: |
2515 |
return "None"; |
return "None"; |
2516 |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: |
2517 |
return "OpenStreetMap"; |
return "OpenStreetMap I"; |
2518 |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: |
2519 |
return "OpenStreetMap Tiles@Home"; |
return "OpenStreetMap II"; |
2520 |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
2521 |
return "OpenCycleMap"; |
return "OpenCycleMap"; |
2522 |
|
case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: |
2523 |
|
return "OSMC Trails"; |
2524 |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
2525 |
return "Maps-For-Free"; |
return "Maps-For-Free"; |
2526 |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
2564 |
return "http://tah.openstreetmap.org/Tiles/tile/#Z/#X/#Y.png"; |
return "http://tah.openstreetmap.org/Tiles/tile/#Z/#X/#Y.png"; |
2565 |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
2566 |
return "http://c.andy.sandbox.cloudmade.com/tiles/cycle/#Z/#X/#Y.png"; |
return "http://c.andy.sandbox.cloudmade.com/tiles/cycle/#Z/#X/#Y.png"; |
2567 |
|
case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: |
2568 |
|
return "http://topo.geofabrik.de/trails/#Z/#X/#Y.png"; |
2569 |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
2570 |
return "http://maps-for-free.com/layer/relief/z#Z/row#Y/#Z_#X-#Y.jpg"; |
return "http://maps-for-free.com/layer/relief/z#Z/row#Y/#Z_#X-#Y.jpg"; |
2571 |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
2604 |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: |
2605 |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: |
case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: |
2606 |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: |
2607 |
|
case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: |
2608 |
return "png"; |
return "png"; |
2609 |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
2610 |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: |
2649 |
case OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE: |
case OSM_GPS_MAP_SOURCE_YAHOO_SATELLITE: |
2650 |
case OSM_GPS_MAP_SOURCE_YAHOO_HYBRID: |
case OSM_GPS_MAP_SOURCE_YAHOO_HYBRID: |
2651 |
return 17; |
return 17; |
2652 |
|
case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: |
2653 |
|
return 15; |
2654 |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: |
2655 |
return 11; |
return 11; |
2656 |
case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: |
case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: |