2012-02-09 10 views
13

È possibile sovrascrivere la fonte dei riquadri visualizzati da Android MapView?Sostituisci origine tile MapView?

Ho alcune tessere di immagini di mappe in un database e vorrei utilizzare le mappe di Google MapView per guardarle.

Inoltre, se ciò non è possibile ... qualcuno sa di un MapView che lo consente? (API OpenStreetMap ... API MapQuest ... ecc.)

Sto cercando una soluzione che non si basa sulla GPL/LGPL.

risposta

5

È possibile utilizzare alcune di queste librerie: osmdroid, mapsforge. Entrambi offrono un'interfaccia per alcuni database di mappe Internet e consentono di creare il proprio provider di mappe.

Essi consentono di avere (e gestire) la cache offline, il caricamento dinamico di mappe asincrone, il ricampionamento su zoom, l'aggiunta di sovrapposizioni e così via, come fa MapView originale. Un altro buon punto di utilizzo di queste librerie è che sono ben progettate per la sostituzione sul posto di google MapView.

Potresti anche essere interessato all'API delle mappe Javascript di Google, che consente anche di utilizzare sorgenti di mappe personalizzate (vedere this link). Questo approccio può essere utilizzato con il caricamento della mappa nella tua WebView. Ma in questo caso hai ancora bisogno della chiave API di Google Maps e io sono entusiasta che sarai limitato a 25000 utilizzi al giorno.

AGGIORNAMENTO == ==

Ora, Google Maps per Android (che uno su Google Play Services) sostenere piastrelle personalizzate, quindi non c'è più bisogno di utilizzare le librerie terze parti per l'applicazione si possiede tessere (se l'utilizzo soddisfa il contratto di licenza).

+0

Grazie per la risposta. Sfortunatamente sia osmdroid che mapsforge usano la licenza LGPL, che speravo di evitare. Comunque, cercherò l'API delle mappe javascript. Grazie! – Matt

+0

Si noti che se è possibile utilizzare librerie LGPL senza aprire il codice, finché l'app non è un lavoro derivativo. Molte app commerciali utilizzano librerie LGPL (come il framework Qt). – OleGG

+1

Inoltre (se stiamo parlando di licenze non GPL) c'è un nuovo Leaflet di framework basato su JS (http://leaflet.cloudmade.com/). Come è stato detto sulla pagina web, è ottimizzato per l'utilizzo su dispositivi mobili, ma non l'ho ancora testato. – OleGG

3

È possibile creare un TileProvider per restituire le tessere all'API di Maps. Quindi utilizzare setMapType per impostare MAP_TYPE_NONE e saranno visibili solo le tessere fornite. So che questo può essere fatto per un MapFragment, ma non l'ho provato con un MapView.

Vedere il codice di esempio da Google in MapDemo TileOverlayDemo per un esempio.