1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4 -*- */ 2 /* vim:set et sw=4 ts=4 */ 3 /* 4 * Copyright (C) 2013 John Stowers <john.stowers@gmail.com> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #include "private.h" 21 #include "osm-gps-map-source.h" 22 23 const char* osm_gps_map_source_get_friendly_name(OsmGpsMapSource_t source)24osm_gps_map_source_get_friendly_name(OsmGpsMapSource_t source) 25 { 26 switch(source) 27 { 28 case OSM_GPS_MAP_SOURCE_NULL: 29 return "None"; 30 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: 31 return "OpenStreetMap I"; 32 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: 33 return "OpenStreetMap II"; 34 case OSM_GPS_MAP_SOURCE_OPENAERIALMAP: 35 return "OpenAerialMap"; 36 case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: 37 return "OpenCycleMap"; 38 case OSM_GPS_MAP_SOURCE_OSM_PUBLIC_TRANSPORT: 39 return "Public Transport"; 40 case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: 41 return "OSMC Trails"; 42 case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: 43 return "Maps-For-Free"; 44 case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: 45 return "Google Maps"; 46 case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: 47 return "Google Satellite"; 48 case OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID: 49 return "Google Hybrid"; 50 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET: 51 return "Virtual Earth"; 52 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE: 53 return "Virtual Earth Satellite"; 54 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID: 55 return "Virtual Earth Hybrid"; 56 case OSM_GPS_MAP_SOURCE_LAST: 57 default: 58 return NULL; 59 } 60 return NULL; 61 } 62 63 //http://www.internettablettalk.com/forums/showthread.php?t=5209 64 //https://garage.maemo.org/plugins/scmsvn/viewcvs.php/trunk/src/maps.c?root=maemo-mapper&view=markup 65 //http://www.ponies.me.uk/maps/GoogleTileUtils.java 66 //http://www.mgmaps.com/cache/MapTileCacher.perl 67 const char* osm_gps_map_source_get_repo_uri(OsmGpsMapSource_t source)68osm_gps_map_source_get_repo_uri(OsmGpsMapSource_t source) 69 { 70 switch(source) 71 { 72 case OSM_GPS_MAP_SOURCE_NULL: 73 return "none://"; 74 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: 75 return OSM_REPO_URI; 76 case OSM_GPS_MAP_SOURCE_OPENAERIALMAP: 77 /* OpenAerialMap is down, offline till furthur notice 78 http://openaerialmap.org/pipermail/talk_openaerialmap.org/2008-December/000055.html */ 79 return NULL; 80 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: 81 /* The Tile@Home serverhas been shut down. */ 82 // return "http://tah.openstreetmap.org/Tiles/tile/#Z/#X/#Y.png"; 83 return NULL; 84 case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: 85 // return "http://c.andy.sandbox.cloudmade.com/tiles/cycle/#Z/#X/#Y.png"; 86 return "http://b.tile.opencyclemap.org/cycle/#Z/#X/#Y.png"; 87 case OSM_GPS_MAP_SOURCE_OSM_PUBLIC_TRANSPORT: 88 return "http://tile.xn--pnvkarte-m4a.de/tilegen/#Z/#X/#Y.png"; 89 case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: 90 // Appears to be shut down 91 return NULL; 92 case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: 93 return "http://maps-for-free.com/layer/relief/z#Z/row#Y/#Z_#X-#Y.jpg"; 94 case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: 95 return "http://mt#R.google.com/vt/lyrs=m&hl=en&x=#X&s=&y=#Y&z=#Z"; 96 case OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID: 97 return "http://mt#R.google.com/vt/lyrs=y&hl=en&x=#X&s=&y=#Y&z=#Z"; 98 case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: 99 return "http://mt#R.google.com/vt/lyrs=s&hl=en&x=#X&s=&y=#Y&z=#Z"; 100 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET: 101 return "http://a#R.ortho.tiles.virtualearth.net/tiles/r#W.jpeg?g=50"; 102 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE: 103 return "http://a#R.ortho.tiles.virtualearth.net/tiles/a#W.jpeg?g=50"; 104 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID: 105 return "http://a#R.ortho.tiles.virtualearth.net/tiles/h#W.jpeg?g=50"; 106 case OSM_GPS_MAP_SOURCE_LAST: 107 default: 108 return NULL; 109 } 110 return NULL; 111 } 112 113 const char * osm_gps_map_source_get_image_format(OsmGpsMapSource_t source)114osm_gps_map_source_get_image_format(OsmGpsMapSource_t source) 115 { 116 switch(source) { 117 case OSM_GPS_MAP_SOURCE_NULL: 118 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: 119 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: 120 case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: 121 case OSM_GPS_MAP_SOURCE_OSM_PUBLIC_TRANSPORT: 122 case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: 123 return "png"; 124 case OSM_GPS_MAP_SOURCE_OPENAERIALMAP: 125 case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: 126 case OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID: 127 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET: 128 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE: 129 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID: 130 case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: 131 case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: 132 return "jpg"; 133 case OSM_GPS_MAP_SOURCE_LAST: 134 default: 135 return "bin"; 136 } 137 return "bin"; 138 } 139 140 141 int osm_gps_map_source_get_min_zoom(OsmGpsMapSource_t source)142osm_gps_map_source_get_min_zoom(OsmGpsMapSource_t source) 143 { 144 return 1; 145 } 146 147 int osm_gps_map_source_get_max_zoom(OsmGpsMapSource_t source)148osm_gps_map_source_get_max_zoom(OsmGpsMapSource_t source) 149 { 150 switch(source) { 151 case OSM_GPS_MAP_SOURCE_NULL: 152 return 18; 153 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP: 154 case OSM_GPS_MAP_SOURCE_OPENCYCLEMAP: 155 case OSM_GPS_MAP_SOURCE_OSM_PUBLIC_TRANSPORT: 156 return OSM_MAX_ZOOM; 157 case OSM_GPS_MAP_SOURCE_OPENSTREETMAP_RENDERER: 158 case OSM_GPS_MAP_SOURCE_OPENAERIALMAP: 159 case OSM_GPS_MAP_SOURCE_GOOGLE_STREET: 160 case OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID: 161 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_STREET: 162 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_SATELLITE: 163 case OSM_GPS_MAP_SOURCE_VIRTUAL_EARTH_HYBRID: 164 return 17; 165 case OSM_GPS_MAP_SOURCE_OSMC_TRAILS: 166 return 15; 167 case OSM_GPS_MAP_SOURCE_MAPS_FOR_FREE: 168 return 11; 169 case OSM_GPS_MAP_SOURCE_GOOGLE_SATELLITE: 170 return 18; 171 case OSM_GPS_MAP_SOURCE_LAST: 172 default: 173 return 17; 174 } 175 return 17; 176 } 177 178 gboolean osm_gps_map_source_is_valid(OsmGpsMapSource_t source)179osm_gps_map_source_is_valid(OsmGpsMapSource_t source) 180 { 181 return osm_gps_map_source_get_repo_uri(source) != NULL; 182 } 183 184