Ajout de superposition à OSMDROID
J'ai été aux prises avec ce temps.
Je suis en train d'ajouter de Superposition sur ma carte.
Je suis à l'aide de l'open source OSMdroid. mais tout ce que je reçois par l'exemple est une simple ligne rouge d'un coin à un autre.
Mon objectif est d'ajouter l'icône d'où mon geoPoint est réglé.
voici mon code:
package osmdemo.demo;
import java.util.List;
import microsoft.mappoint.TileSystem;
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.MapView.Projection;
import org.osmdroid.views.overlay.Overlay;
import org.osmdroid.views.overlay.ScaleBarOverlay;
import org.osmdroid.views.util.constants.MapViewConstants;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.location.LocationManager;
import android.os.Bundle;
public class map extends Activity implements MapViewConstants
{
/** Called when the activity is first created. */
protected static final String PROVIDER_NAME = LocationManager.GPS_PROVIDER;
MapController mapController;
MapView mapView;
ScaleBarOverlay mScaleBarOverlay;
private MapOverlay mmapOverlay = null;
private LocationManager mLocMgr;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapController = mapView.getController();
mapController.setZoom(20);
GeoPoint point2 = new GeoPoint(31.987968, 34.783069);
mapController.setCenter(point2);
this.mmapOverlay = new MapOverlay(this);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.add(mmapOverlay);
mapView.invalidate();
}
public class MapOverlay extends org.osmdroid.views.overlay.Overlay
{
public MapOverlay(Context ctx)
{
super(ctx);
//TODO Auto-generated constructor stub
}
@Override
protected void draw(Canvas pC, MapView pOsmv, boolean shadow)
{
if (shadow)
return;
Paint lp3;
lp3 = new Paint();
lp3.setColor(Color.RED);
lp3.setAntiAlias(true);
lp3.setStyle(Style.STROKE);
lp3.setStrokeWidth(1);
lp3.setTextAlign(Paint.Align.LEFT);
lp3.setTextSize(12);
//Calculate the half-world size
final Rect viewportRect = new Rect();
final Projection projection = pOsmv.getProjection();
final int zoomLevel = projection.getZoomLevel();
int mWorldSize_2 = TileSystem.MapSize(zoomLevel) / 2;
//Save the Mercator coordinates of what is on the screen
viewportRect.set(projection.getScreenRect());
//DON'T set offset with either of below
//viewportRect.offset(-mWorldSize_2, -mWorldSize_2);
//viewportRect.offset(mWorldSize_2, mWorldSize_2);
//Draw a line from one corner to the other
pC.drawLine(viewportRect.left, viewportRect.top,
viewportRect.right, viewportRect.bottom, lp3);
}
public void onProviderDisabled(String arg0)
{
}
public void onProviderEnabled(String provider)
{
}
}
}
c'est mon Manifeste:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.overlay" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application >
<activity android:name=".OverlayDemo" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Merci d'avance,
ray.
source d'informationauteur rayman
Vous devez vous connecter pour publier un commentaire.
Si vous essayez d'ajouter une icône, alors vous voulez regarder la ItemizedOverlay classes. Vous pouvez utiliser osmdroid de ItemizedIconOverlay qui est une mise en œuvre concrète de ItemizedOverlay, ou vous pouvez sous-classe ItemizedOverlay sur votre propre. Jetez un oeil à échantillons, tels que:
http://code.google.com/p/osmdroid/source/browse/trunk/OpenStreetMapViewer/src/org/osmdroid/samples/SampleWithMinimapItemizedoverlay.java
@rayman
c'est là que vos modifications de l'emplacement
Mais comme vous pouvez le voir il n'ajoute pas de nouvelle icône à la superposition.
Vous devez effacer les éléments précédents
(si vous voulez que le "vieux" icône pour être enlevé quand le nouveau est créé), puis ajouter le nouveau point (tpg) pour les articles.
et ainsi de suite...