int main(int argc, char *argv[]) { #if ! GLIB_CHECK_VERSION (2, 36, 0) g_type_init(); #endif VikMapSource *spotmaps4osm_wmsc_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_WMSC_MAP_SOURCE, "id", 202, "label", "Spotmaps (WMS-C)", "hostname", "spotmaps.youmapps.org", "url", "/spotmaps4osm/?LAYERS=spotmaps4osm&SERVICE=SPOTMAPS4OSM&SRS=EPSG:4326&bbox=%s,%s,%s,%s&width=256&height=256", NULL)); VikMapSource *osmarender_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 12, "label", "OpenStreetMap (Osmarender)", "hostname", "tah.openstreetmap.org", "url", "/Tiles/tile/%d/%d/%d.png", "check-file-server-time", TRUE, NULL)); gdouble lats[] = { 0, 90, 45, -45, -90 }; gdouble lons[] = { 0, 180, 90, 45, -45, -90, -180 }; int scale; for (scale = 0 ; scale < 18 ; scale++) { int i; for (i=0 ; i<sizeof(lats)/sizeof(lats[0]) ; i++) { int j; for (j=0 ; j<sizeof(lons)/sizeof(lons[0]) ; j++) { test_coord_to_mapcoord (spotmaps4osm_wmsc_type, lats[i], lons[j], 2<<scale); test_coord_to_mapcoord (osmarender_type, lats[i], lons[j], 2<<scale); } } } for (scale = 0 ; scale < 18 ; scale++) { test_mapcoord_to_center_coord (spotmaps4osm_wmsc_type, 0, 0, scale); test_mapcoord_to_center_coord (osmarender_type, 0, 0, scale); } return 0; }
/* initialisation */ void osm_init () { VikMapSource *mapnik_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 13, "label", "OpenStreetMap (Mapnik)", "hostname", "tile.openstreetmap.org", "url", "/%d/%d/%d.png", "check-file-server-time", FALSE, "use-etag", TRUE, "copyright", "© OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *cycle_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 17, "label", "OpenStreetMap (Cycle)", "hostname", "b.tile.opencyclemap.org", "url", "/cycle/%d/%d/%d.png", "check-file-server-time", TRUE, "use-etag", FALSE, "copyright", "Tiles courtesy of Andy Allan © OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *transport_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 20, "label", "OpenStreetMap (Transport)", "hostname", "c.tile2.opencyclemap.org", "url", "/transport/%d/%d/%d.png", "check-file-server-time", TRUE, "use-etag", FALSE, "copyright", "Tiles courtesy of Andy Allan © OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *mapquest_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 19, "label", "OpenStreetMap (MapQuest)", "hostname", "otile1.mqcdn.com", "url", "/tiles/1.0.0/osm/%d/%d/%d.png", "check-file-server-time", TRUE, "use-etag", FALSE, "copyright", "Tiles Courtesy of MapQuest © OpenStreetMap contributors", "license", "MapQuest Specific", "license-url", "http://developer.mapquest.com/web/info/terms-of-use", NULL)); // NB no cache needed for this type!! VikMapSource *direct_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", 21, "label", _("On Disk OSM Tile Format"), // For using your own generated data assumed you know the license already! "copyright", "© OpenStreetMap contributors", // probably "use-direct-file-access", TRUE, NULL)); maps_layer_register_map_source (mapquest_type); maps_layer_register_map_source (mapnik_type); maps_layer_register_map_source (cycle_type); maps_layer_register_map_source (transport_type); maps_layer_register_map_source (direct_type); // Webtools VikWebtoolCenter *webtool = NULL; webtool = vik_webtool_center_new_with_members ( _("OSM (view)"), "http://openstreetmap.org/?lat=%s&lon=%s&zoom=%d&layers=B000FTF" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); webtool = vik_webtool_center_new_with_members ( _("OSM (edit)"), "http://www.openstreetmap.org/edit?lat=%s&lon=%s&zoom=%d" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); webtool = vik_webtool_center_new_with_members ( _("OSM (render)"), "http://www.informationfreeway.org/?lat=%s&lon=%s&zoom=%d&layers=B0000F000F" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); VikWebtoolBounds *webtoolbounds = NULL; // Example: http://127.0.0.1:8111/load_and_zoom?left=8.19&right=8.20&top=48.605&bottom=48.590&select=node413602999 // JOSM or merkaartor must already be running with remote interface enabled webtoolbounds = vik_webtool_bounds_new_with_members ( _("Local port 8111 (eg JOSM)"), "http://localhost:8111/load_and_zoom?left=%s&right=%s&bottom=%s&top=%s" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtoolbounds ) ); g_object_unref ( webtoolbounds ); // Datasource VikWebtoolDatasource *vwtds = NULL; vwtds = vik_webtool_datasource_new_with_members ( _("OpenStreetMap Notes"), "http://api.openstreetmap.org/api/0.6/notes.gpx?bbox=%s,%s,%s,%s&closed=0", "LBRT", NULL ); vik_ext_tool_datasources_register ( VIK_EXT_TOOL ( vwtds ) ); g_object_unref ( vwtds ); vwtds = vik_webtool_datasource_new_with_members ( _("OpenStreetBugs"), "http://openstreetbugs.schokokeks.org/api/0.1/getGPX?l=%s&r=%s&b=%s&t=%s&open=only_open_bugs", "LRBT", NULL ); vik_ext_tool_datasources_register ( VIK_EXT_TOOL ( vwtds ) ); g_object_unref ( vwtds ); // Goto VikGotoXmlTool *nominatim = VIK_GOTO_XML_TOOL ( g_object_new ( VIK_GOTO_XML_TOOL_TYPE, "label", "OSM Nominatim", "url-format", "http://nominatim.openstreetmap.org/search?q=%s&format=xml", "lat-path", "/searchresults/place", "lat-attr", "lat", "lon-path", "/searchresults/place", "lon-attr", "lon", NULL ) ); vik_goto_register ( VIK_GOTO_TOOL ( nominatim ) ); g_object_unref ( nominatim ); VikGotoXmlTool *namefinder = VIK_GOTO_XML_TOOL ( g_object_new ( VIK_GOTO_XML_TOOL_TYPE, "label", "OSM Name finder", "url-format", "http://gazetteer.openstreetmap.org/namefinder/search.xml?find=%s&max=1", "lat-path", "/searchresults/named", "lat-attr", "lat", "lon-path", "/searchresults/named", "lon-attr", "lon", NULL ) ); vik_goto_register ( VIK_GOTO_TOOL ( namefinder ) ); g_object_unref ( namefinder ); // Not really OSM but can't be bothered to create somewhere else to put it... webtool = vik_webtool_center_new_with_members ( _("Wikimedia Toolserver GeoHack"), "http://toolserver.org/~geohack/geohack.php?params=%s;%s" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); /* See API references: https://github.com/DennisOSRM/Project-OSRM/wiki/Server-api */ VikRoutingEngine *osrm = g_object_new ( VIK_ROUTING_WEB_ENGINE_TYPE, "id", "osrm", "label", "OSRM", "format", "gpx", "url-base", "http://router.project-osrm.org/viaroute?output=gpx", "url-start-ll", "&loc=%s,%s", "url-stop-ll", "&loc=%s,%s", "url-via-ll", "&loc=%s,%s", NULL); vik_routing_register ( VIK_ROUTING_ENGINE ( osrm ) ); g_object_unref ( osrm ); }
void maps_layer_register_type ( const char *label, guint id, VikMapsLayer_MapType *map_type ) { g_assert(id == map_type->uniq_id); VikMapType *object = vik_map_type_new_with_id (*map_type, label); maps_layer_register_map_source ( VIK_MAP_SOURCE (object) ); }
/* initialisation */ void osm_init () { VikMapSource *mapnik_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_MAPNIK, "label", _("OpenStreetMap (Mapnik)"), "name", "OSM-Mapnik", "hostname", "tile.openstreetmap.org", "url", "/%d/%d/%d.png", "check-file-server-time", FALSE, "use-etag", TRUE, "zoom-min", 0, "zoom-max", 19, "copyright", "© OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *cycle_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_CYCLE, "label", _("OpenStreetMap (Cycle)"), "name", "OSM-Cycle", "url", "https://tile.thunderforest.com/cycle/%d/%d/%d.png?apikey="VIK_CONFIG_THUNDERFOREST_KEY, "check-file-server-time", TRUE, "use-etag", FALSE, "zoom-min", 0, "zoom-max", 18, "copyright", "Tiles courtesy of Andy Allan © OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *transport_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_TRANSPORT, "label", _("OpenStreetMap (Transport)"), "name", "OSM-Transport", "hostname", "tile2.opencyclemap.org", "url", "/transport/%d/%d/%d.png", "check-file-server-time", TRUE, "use-etag", FALSE, "zoom-min", 0, "zoom-max", 18, "copyright", "Tiles courtesy of Andy Allan © OpenStreetMap contributors", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); VikMapSource *hot_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_HUMANITARIAN, "name", "OSM-Humanitarian", "label", _("OpenStreetMap (Humanitarian)"), "hostname", "c.tile.openstreetmap.fr", "url", "/hot/%d/%d/%d.png", "check-file-server-time", TRUE, "use-etag", FALSE, "zoom-min", 0, "zoom-max", 20, // Super detail!! "copyright", "© OpenStreetMap contributors. Tiles courtesy of Humanitarian OpenStreetMap Team", "license", "CC-BY-SA", "license-url", "http://www.openstreetmap.org/copyright", NULL)); // NB no cache needed for this type!! VikMapSource *direct_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_ON_DISK, "label", _("On Disk OSM Tile Format"), // For using your own generated data assumed you know the license already! "copyright", "© OpenStreetMap contributors", // probably "use-direct-file-access", TRUE, NULL)); // NB no cache needed for this type!! VikMapSource *mbtiles_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_MBTILES, "label", _("MBTiles File"), // For using your own generated data assumed you know the license already! "copyright", "© OpenStreetMap contributors", // probably "use-direct-file-access", TRUE, "is-mbtiles", TRUE, NULL)); // NB no cache needed for this type!! VikMapSource *metatiles_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_OSM_METATILES, "label", _("OSM Metatiles"), // For using your own generated data assumed you know the license already! "copyright", "© OpenStreetMap contributors", // probably "use-direct-file-access", TRUE, "is-osm-meta-tiles", TRUE, NULL)); // Note using a registered token for the Mapbox Tileservice // Thus not only will the (free) service allocation limit be reached by normal users // but by anymore who cares to read these sources and use the default themselves. VikMapSource *mapbox_type = VIK_MAP_SOURCE(g_object_new(VIK_TYPE_SLIPPY_MAP_SOURCE, "id", MAP_ID_MAPBOX_OUTDOORS, "name", "Mapbox-Outdoors", "label", _("Mapbox Outdoors"), "url", "https://api.tiles.mapbox.com/styles/v1/mapbox/outdoors-v9/tiles/256/%d/%d/%d?access_token="VIK_CONFIG_MAPBOX_TOKEN, "check-file-server-time", TRUE, "use-etag", FALSE, "zoom-min", 0, "zoom-max", 19, "copyright", "© Mapbox © OpenStreetMap", "license", _("Mapbox Specific"), "license-url", "https://www.mapbox.com/tos", NULL)); // NB The first registered map source is the default // (unless the user has specified Map Layer defaults) maps_layer_register_map_source (mapbox_type); maps_layer_register_map_source (mapnik_type); maps_layer_register_map_source (cycle_type); maps_layer_register_map_source (transport_type); maps_layer_register_map_source (hot_type); maps_layer_register_map_source (direct_type); maps_layer_register_map_source (mbtiles_type); maps_layer_register_map_source (metatiles_type); // Webtools VikWebtoolCenter *webtool = NULL; webtool = vik_webtool_center_new_with_members ( _("OSM (view)"), "http://www.openstreetmap.org/?lat=%s&lon=%s&zoom=%d" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); webtool = vik_webtool_center_new_with_members ( _("OSM (edit)"), "http://www.openstreetmap.org/edit?lat=%s&lon=%s&zoom=%d" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); // Note the use of positional parameters webtool = vik_webtool_center_new_with_members ( _("OSM (query)"), "http://www.openstreetmap.org/query?lat=%1$s&lon=%2$s#map=%3$d/%1$s/%2$s" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); webtool = vik_webtool_center_new_with_members ( _("OSM (render)"), "http://www.informationfreeway.org/?lat=%s&lon=%s&zoom=%d&layers=B0000F000F" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); VikWebtoolBounds *webtoolbounds = NULL; // Example: http://127.0.0.1:8111/load_and_zoom?left=8.19&right=8.20&top=48.605&bottom=48.590&select=node413602999 // JOSM or merkaartor must already be running with remote interface enabled webtoolbounds = vik_webtool_bounds_new_with_members ( _("Local port 8111 (eg JOSM)"), "http://localhost:8111/load_and_zoom?left=%s&right=%s&bottom=%s&top=%s" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtoolbounds ) ); g_object_unref ( webtoolbounds ); VikWebtoolFormat *vwtf = NULL; vwtf = vik_webtool_format_new_with_members ( _("Geofabrik Map Compare"), "http://tools.geofabrik.de/mc/#%s/%s/%s", "ZAO" ); vik_ext_tools_register ( VIK_EXT_TOOL ( vwtf ) ); g_object_unref ( vwtf ); // Datasource VikWebtoolDatasource *vwtds = NULL; vwtds = vik_webtool_datasource_new_with_members ( _("OpenStreetMap Notes"), "https://api.openstreetmap.org/api/0.6/notes.gpx?bbox=%s,%s,%s,%s&closed=0", "LBRT", NULL, NULL, NULL ); vik_ext_tool_datasources_register ( VIK_EXT_TOOL ( vwtds ) ); g_object_unref ( vwtds ); // Goto VikGotoXmlTool *nominatim = VIK_GOTO_XML_TOOL ( g_object_new ( VIK_GOTO_XML_TOOL_TYPE, "label", "OSM Nominatim", "url-format", "https://nominatim.openstreetmap.org/search?q=%s&format=xml", "lat-path", "/searchresults/place", "lat-attr", "lat", "lon-path", "/searchresults/place", "lon-attr", "lon", "desc-path", "/searchresults/place", "desc-attr", "display_name", NULL ) ); vik_goto_register ( VIK_GOTO_TOOL ( nominatim ) ); g_object_unref ( nominatim ); // Not really OSM but can't be bothered to create somewhere else to put it... webtool = vik_webtool_center_new_with_members ( _("Wikimedia Toolserver GeoHack"), "http://tools.wmflabs.org/geohack/geohack.php?params=%s;%s" ); vik_ext_tools_register ( VIK_EXT_TOOL ( webtool ) ); g_object_unref ( webtool ); }