--- trunk/src/map-tool.c 2009/08/28 07:52:01 84 +++ trunk/src/map-tool.c 2009/08/28 12:07:16 85 @@ -138,31 +138,35 @@ GdkEventConfigure *event, map_context_t *context) { - /* set default values if they are invalid */ - if(!context->appdata->map.zoom || - isnan(context->appdata->map.pos.lat) || - isnan(context->appdata->map.pos.lon)) { - printf("no valid map position found\n"); - - pos_t *refpos = get_pos(context->appdata); - if(refpos && !isnan(refpos->lat) && !isnan(refpos->lon)) { - /* use gps position if present */ - context->appdata->map.pos = *refpos; - context->appdata->map.zoom = GPS_DEFAULT_ZOOM; - } else { - /* use world map otherwise */ - context->appdata->map.pos.lat = 0.0; - context->appdata->map.pos.lon = 0.0; - context->appdata->map.zoom = 1; + if(!context->map_complete) { + + /* set default values if they are invalid */ + if(!context->appdata->map.zoom || + isnan(context->appdata->map.pos.lat) || + isnan(context->appdata->map.pos.lon)) { + printf("no valid map position found\n"); + + pos_t *refpos = get_pos(context->appdata); + if(refpos && !isnan(refpos->lat) && !isnan(refpos->lon)) { + /* use gps position if present */ + context->appdata->map.pos = *refpos; + context->appdata->map.zoom = GPS_DEFAULT_ZOOM; + } else { + /* use world map otherwise */ + context->appdata->map.pos.lat = 0.0; + context->appdata->map.pos.lon = 0.0; + context->appdata->map.zoom = 1; + } } + + /* jump to initial position */ + osm_gps_map_set_mapcenter(OSM_GPS_MAP(context->widget), + context->appdata->map.pos.lat, + context->appdata->map.pos.lon, + context->appdata->map.zoom); + context->map_complete = TRUE; } - /* jump to initial position */ - osm_gps_map_set_mapcenter(OSM_GPS_MAP(context->widget), - context->appdata->map.pos.lat, - context->appdata->map.pos.lon, - context->appdata->map.zoom); - return FALSE; } @@ -484,6 +488,7 @@ context = appdata->map.context = g_new0(map_context_t, 1); context->appdata = appdata; + context->map_complete = FALSE; /* cleanup old (pre 0.8.7) path if it exists */ char *old_path = g_strdup_printf("%s/map/", appdata->image_path);