2012-11-27 33 views
0

我正在使用在我的應用程序中提供的源代碼:URL https://github.com/jgilfelt/android-mapviewballoons。它通過使用url顯示圖像。但是,如何從應用程序的可繪製文件夾中加載圖像?如何從可繪製文件夾添加圖像,而不是從網址?

我發現這個MapView網址,它顯示氣球中的圖像。但它顯示來自url的圖像,因爲我想從文件夾中顯示自己的圖像。我如何實現這一目標?

代碼:

public class CustomMap extends MapActivity { 

MapView mapView; 
List<Overlay> mapOverlays; 
Drawable drawable; 
Drawable drawable2; 
CustomItemizedOverlay<CustomOverlayItem> itemizedOverlay; 
CustomItemizedOverlay<CustomOverlayItem> itemizedOverlay2; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 

    mapOverlays = mapView.getOverlays(); 

    // first overlay 
    drawable = getResources().getDrawable(R.drawable.marker); 
    itemizedOverlay = new CustomItemizedOverlay<CustomOverlayItem>(drawable, 
    mapView); 

    GeoPoint point = new GeoPoint((int)(51.5174723*1E6),(int)(-0.0899537*1E6)); 
    CustomOverlayItem overlayItem = new CustomOverlayItem(point, 
    "Tomorrow  Never Dies (1997)", 
      "(M gives Bond his mission in Daimler car)", 
      "http://ia.media-imdb.com/images 
    /M/[email protected]@._V1._SX40_CR0,0,40,54_.jpg"); 
    itemizedOverlay.addOverlay(overlayItem); 

    GeoPoint point2 = new GeoPoint((int)(51.515259*1E6),(int)(-0.086623*1E6)); 
    CustomOverlayItem overlayItem2 = new CustomOverlayItem(point2, 
    "GoldenEye (1995)", 
      "(Interiors Russian defence ministry council chambers in 
    St Petersburg)", 
      "http://ia.media-imdb.com/images 

    M/MV5BMzk2OTg 
    [email protected]@._V1._SX40_CR0,0,40,54_.jpg"); 


    itemizedOverlay.addOverlay(overlayItem2); 

    mapOverlays.add(itemizedOverlay); 

    // second overlay 
    drawable2 = getResources().getDrawable(R.drawable.marker2); 
    itemizedOverlay2 = new CustomItemizedOverlay<CustomOverlayItem> 
    (drawable2, mapView); 

    GeoPoint point3 = new GeoPoint((int)(51.513329*1E6),(int)(-0.08896*1E6)); 
    CustomOverlayItem overlayItem3 = new CustomOverlayItem(point3, "Sliding 
    Doors (1998)", 
      "(interiors)", null); 
    itemizedOverlay2.addOverlay(overlayItem3); 

    GeoPoint point4 = new GeoPoint((int)(51.51738*1E6),(int)(-0.08186*1E6)); 
    CustomOverlayItem overlayItem4 = new CustomOverlayItem(point4, "Mission: 
    Impossible (1996)", 
      "(Ethan & Jim cafe meeting)", 
      "http://ia.media-imdb.com/images 
    /M/MV5BMjAyNjk5Njk0MV 
     [email protected]@._V1._SX40_CR0,0,40,54_.jpg");  
    itemizedOverlay2.addOverlay(overlayItem4); 

    mapOverlays.add(itemizedOverlay2); 

    final MapController mc = mapView.getController(); 
    mc.animateTo(point2); 
    mc.setZoom(16); 

} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

    } 
+0

我想給我自己的圖像不url鏈接的圖像 –

+0

可能重複的[如何給本地圖像文件的url](http://stackoverflow.com/questions/13599828/how-to-give-url-of -local-image-file) – Matthieu

回答

0

你這是怎麼添加圖片作爲地圖覆蓋

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Point; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 

public class DrawableMapOverlay extends Overlay { 

    private static final double MAX_TAP_DISTANCE_KM = 3; 
    // Rough approximation - one degree = 50 nautical miles 
    private static final double MAX_TAP_DISTANCE_DEGREES = MAX_TAP_DISTANCE_KM * 0.5399568 * 50; 
    private final GeoPoint geoPoint; 
    private final Context context; 
    private final int drawable; 

    /** 
    * @param context the context in which to display the overlay 
    * @param geoPoint the geographical point where the overlay is located 
    * @param drawable the ID of the desired drawable 
    */ 
    public CamerasMapOverlay(Context context, GeoPoint geoPoint, int drawable) { 
    this.context = context; 
    this.geoPoint = geoPoint; 
    this.drawable = drawable; 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { 
    super.draw(canvas, mapView, shadow); 

    // Convert geo coordinates to screen pixels 
    Point screenPoint = new Point(); 
    mapView.getProjection().toPixels(geoPoint, screenPoint); 

    // Read the image 
    Bitmap markerImage = BitmapFactory.decodeResource(context.getResources(), drawable); 

    // Draw it, centered around the given coordinates 
    canvas.drawBitmap(markerImage, 
     screenPoint.x - markerImage.getWidth()/2, 
     screenPoint.y - markerImage.getHeight()/2, null); 
    return true; 
    } 

    @Override 
    public boolean onTap(GeoPoint p, MapView mapView) { 
    // Handle tapping on the overlay here 
    return true; 
    } 
} 

在具有您的MapView活動:

MapView map = (MapView) findViewById(R.id.mapview); 
    MapController mapController = map.getController(); 
    List<Overlay> overlays = map.getOverlays(); 
    overlays.add(new DrawableMapOverlay(this, point, R.drawable.my_drawable); 
    map.invalidate(); 
Editors 

看看this教程..

+0

什麼是疊加?你的意思是mapOverlays? –

+0

不在氣球上顯示圖像 –

+0

此代碼顯示標記位置上的圖像不是氣球 –

0

你不能。因爲這個拉拔。 *值是由android sdk創建的,而您將新圖像添加到文件夾。這意味着,它們不會在您的應用程序運行時創建,也不能添加新的應用程序。

取而代之,您可以將圖像保存到forlder並將其方式和名稱保存到db。

相關問題