Message from discussion
osmdroid and mapsforge
Date: Sun, 4 Nov 2012 09:55:13 -0800 (PST)
From: manimaul <manim...@gmail.com>
To: osmdroid@googlegroups.com
Message-Id: <4a35d6d2-5e0f-4497-b52d-059962fa53ad@googlegroups.com>
In-Reply-To: <7ff1d883-d39f-4bbc-9083-34a2aa7ae372@googlegroups.com>
References: <8b06b12f-12ca-4d4d-9878-c9d6a9c6b95e@googlegroups.com>
<3a8c0cdf-13be-49de-8755-aceb410d333c@googlegroups.com>
<cc17e24a-0733-421b-8da9-5f94691d85a0@googlegroups.com>
<2bd0bc8c-418b-495a-a18f-f3a80518b98c@googlegroups.com>
<CAFr3OamqdNXZg6gHOsO9p6SGnGLfvtBObbFw5Keb6a+jG6Zb0Q@mail.gmail.com>
<0e318496-47f0-434f-a008-a62e4e125143@googlegroups.com>
<ecd1915c-82b4-4283-923e-5cf2889312cd@googlegroups.com>
<5d0580cc-64cc-4ff2-af91-4b67126cbb0b@googlegroups.com>
<09162d3d-90c4-409b-835e-3a2e80b9f99f@googlegroups.com>
<7ff1d883-d39f-4bbc-9083-34a2aa7ae372@googlegroups.com>
Subject: Re: osmdroid and mapsforge
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_1039_31382020.1352051713290"
------=_Part_1039_31382020.1352051713290
Content-Type: multipart/alternative;
boundary="----=_Part_1040_29056613.1352051713290"
------=_Part_1040_29056613.1352051713290
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
I've been playing around with this for a bit. Here is a very simple
example utilizing Jez' code to overlay a mapsforge map on top of osmdoid.
I thought I'd share if anyone else is interested in this.
Will
---
import org.mapsforge.android.maps.MapsforgeOSMDroidTileProvider;
import org.mapsforge.android.maps.MapsforgeOSMTileSource;
import org.osmdroid.tileprovider.MapTileProviderArray;
import org.osmdroid.tileprovider.modules.MapTileModuleProviderBase;
import org.osmdroid.tileprovider.modules.NetworkAvailabliltyCheck;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.TilesOverlay;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
public class MapActivity extends Activity {
private final static String MAPSFORGE = "Mapsforge";
private MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mapView = (MapView) this.findViewById(R.id.mapview);
//
//mapsforge tile provider setup
//
final MapsforgeOSMTileSource mapsforgeTileSource = new
MapsforgeOSMTileSource(MAPSFORGE);
mapsforgeTileSource.setMapFile(Environment.getExternalStorageDirectory()+"/washington.map");
final NetworkAvailabliltyCheck networkCheck = new
NetworkAvailabliltyCheck(this);
final MapsforgeOSMDroidTileProvider mapsforgeProvider =
new
MapsforgeOSMDroidTileProvider(TileSourceFactory.DEFAULT_TILE_SOURCE,
networkCheck);
mapsforgeProvider.setTileSource(mapsforgeTileSource);
final MapTileModuleProviderBase[] myProviders = new
MapTileModuleProviderBase[1];
myProviders[0] = mapsforgeProvider;
final MapTileProviderArray myMapTileProviderArray = new
MapTileProviderArray(mapsforgeTileSource, null, myProviders);
final TilesOverlay myOverlay = new
TilesOverlay(myMapTileProviderArray, this);
mapView.getOverlays().add(myOverlay);
final MyHandler mHandler = new MyHandler(this);
myMapTileProviderArray.setTileRequestCompleteHandler(mHandler);
//
//end mapsforge tile provider setup
//
mapView.setMultiTouchControls(true);
final MapController mapController = mapView.getController();
mapController.setZoom(10);
final GeoPoint startPoint = new GeoPoint(47329981,-122456359);
mapController.setCenter(startPoint);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_map, menu);
return true;
}
private static class MyHandler extends Handler {
private MapActivity mapActivity;
public MyHandler(final MapActivity mapActivity) {
this.mapActivity = mapActivity;
}
public void handleMessage(Message msg) {
mapActivity.mapView.invalidate();
}
}
}
------=_Part_1040_29056613.1352051713290
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
I've been playing around with this for a bit. Here is a very simple e=
xample utilizing Jez' code to overlay a mapsforge map on top of osmdoid.&nb=
sp; I thought I'd share if anyone else is interested in this.<br><br>Will <=
br><br>---<br><br>import org.mapsforge.android.maps.MapsforgeOSMDroidTilePr=
ovider;<br>import org.mapsforge.android.maps.MapsforgeOSMTileSource;<br>imp=
ort org.osmdroid.tileprovider.MapTileProviderArray;<br>import org.osmdroid.=
tileprovider.modules.MapTileModuleProviderBase;<br>import org.osmdroid.tile=
provider.modules.NetworkAvailabliltyCheck;<br>import org.osmdroid.tileprovi=
der.tilesource.TileSourceFactory;<br>import org.osmdroid.util.GeoPoint;<br>=
import org.osmdroid.views.MapController;<br>import org.osmdroid.views.MapVi=
ew;<br>import org.osmdroid.views.overlay.TilesOverlay;<br><br>import androi=
d.app.Activity;<br>import android.os.Bundle;<br>import android.os.Environme=
nt;<br>import android.os.Handler;<br>import android.os.Message;<br>import a=
ndroid.view.Menu;<br><br>public class MapActivity extends Activity {<br>&nb=
sp; private final static String MAPSFORGE =3D "Mapsforge";<br>&=
nbsp; private MapView mapView;<br> <br> =
@Override<br> public void onCreate(Bundle sa=
vedInstanceState) {<br> super.onC=
reate(savedInstanceState);<br> se=
tContentView(R.layout.activity_map);<br>  =
; <br> mapView =3D (MapView=
) this.findViewById(R.id.mapview);<br> &=
nbsp; <br> //<br> &nbs=
p; //mapsforge tile provider setup<br> &=
nbsp; //<br> &nb=
sp; <br> final MapsforgeOSMTileSo=
urce mapsforgeTileSource =3D new MapsforgeOSMTileSource(MAPSFORGE);<br>&nbs=
p; mapsforgeTileSource.setMapFile(Envir=
onment.getExternalStorageDirectory()+"/washington.map");<br> &nb=
sp; <br> =
final NetworkAvailabliltyCheck networkCheck =3D new NetworkAvai=
labliltyCheck(this);<br> <br>&nbs=
p; final MapsforgeOSMDroidTileProvider =
mapsforgeProvider =3D <br> &=
nbsp; new MapsforgeOSMDroidTileProvider=
(TileSourceFactory.DEFAULT_TILE_SOURCE, networkCheck);<br>  =
; <br> ma=
psforgeProvider.setTileSource(mapsforgeTileSource);<br> &n=
bsp; <br> final=
MapTileModuleProviderBase[] myProviders =3D new MapTileModuleProviderBase[=
1];<br> myProviders[0] =3D mapsfo=
rgeProvider;<br> final MapTilePro=
viderArray myMapTileProviderArray =3D new MapTileProviderArray(mapsforgeTil=
eSource, null, myProviders);<br> =
final TilesOverlay myOverlay =3D new TilesOverlay(myMapTileProviderArray, t=
his);<br> mapView.getOverlays().a=
dd(myOverlay);<br> <br> &nbs=
p; final MyHandler mHandler =3D new MyHandler=
(this);<br> <br>  =
; myMapTileProviderArray.setTileRequestCompleteHand=
ler(mHandler);<br> <br> &nbs=
p; //<br> =
//end mapsforge tile provider setup<br>  =
; //<br> <br> &n=
bsp; mapView.setMultiTouchControls(true);<br>=
<br> &nbs=
p; final MapController mapController =3D mapView.getController(=
);<br> mapController.setZoom(10);=
<br> <br> =
final GeoPoint startPoint =3D new GeoPoint(47329981,-122=
456359);<br> mapController.setCen=
ter(startPoint);<br> <br> &n=
bsp; }<br> <br> @Override<br>&nbs=
p; public boolean onCreateOptionsMenu(Menu menu) {<br> &nb=
sp; getMenuInflater().inflate(R.menu.activity=
_map, menu);<br> return true;<br>=
}<br> <br> private s=
tatic class MyHandler extends Handler {<br> &n=
bsp; private MapActivity mapActivity;<br> &nbs=
p; <br> public MyHand=
ler(final MapActivity mapActivity) {<br>  =
; this.mapActivity =3D mapActivity;<br> =
}<br> &nb=
sp; <br> public void handle=
Message(Message msg) {<br> &=
nbsp; mapActivity.mapView.invalidate();<br> &n=
bsp; }<br> }<br> <br>=
}<br>
------=_Part_1040_29056613.1352051713290--
------=_Part_1039_31382020.1352051713290--