Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
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.&nbsp; 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;&nbsp;&nbsp; private final static String MAPSFORGE =3D "Mapsforge";<br>&=
nbsp;&nbsp;&nbsp; private MapView mapView;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;=
&nbsp;&nbsp; @Override<br>&nbsp;&nbsp;&nbsp; public void onCreate(Bundle sa=
vedInstanceState) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.onC=
reate(savedInstanceState);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; se=
tContentView(R.layout.activity_map);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapView =3D (MapView=
) this.findViewById(R.id.mapview);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp; //mapsforge tile provider setup<br>&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final MapsforgeOSMTileSo=
urce mapsforgeTileSource =3D new MapsforgeOSMTileSource(MAPSFORGE);<br>&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapsforgeTileSource.setMapFile(Envir=
onment.getExternalStorageDirectory()+"/washington.map");<br>&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
final&nbsp; NetworkAvailabliltyCheck networkCheck =3D new&nbsp; NetworkAvai=
labliltyCheck(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final MapsforgeOSMDroidTileProvider =
mapsforgeProvider =3D <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new MapsforgeOSMDroidTileProvider=
(TileSourceFactory.DEFAULT_TILE_SOURCE, networkCheck);<br>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ma=
psforgeProvider.setTileSource(mapsforgeTileSource);<br>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final=
 MapTileModuleProviderBase[] myProviders =3D new MapTileModuleProviderBase[=
1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProviders[0] =3D mapsfo=
rgeProvider;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final MapTilePro=
viderArray myMapTileProviderArray =3D new MapTileProviderArray(mapsforgeTil=
eSource, null, myProviders);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
final TilesOverlay myOverlay =3D new TilesOverlay(myMapTileProviderArray, t=
his);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapView.getOverlays().a=
dd(myOverlay);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final MyHandler mHandler =3D new MyHandler=
(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; myMapTileProviderArray.setTileRequestCompleteHand=
ler(mHandler);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; //end mapsforge tile provider setup<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapView.setMultiTouchControls(true);<br>=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp; final MapController mapController =3D mapView.getController(=
);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapController.setZoom(10);=
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; final GeoPoint startPoint =3D new GeoPoint(47329981,-122=
456359);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapController.setCen=
ter(startPoint);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&n=
bsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; @Override<br>&nbs=
p;&nbsp;&nbsp; public boolean onCreateOptionsMenu(Menu menu) {<br>&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getMenuInflater().inflate(R.menu.activity=
_map, menu);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>=
&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; private s=
tatic class MyHandler extends Handler {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; private MapActivity mapActivity;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyHand=
ler(final MapActivity mapActivity) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.mapActivity =3D mapActivity;<br>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void handle=
Message(Message msg) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp; mapActivity.mapView.invalidate();<br>&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>=
}<br>
------=_Part_1040_29056613.1352051713290--

------=_Part_1039_31382020.1352051713290--