在地图上显示照片缩略图

时间:2011-02-16 06:26:33

标签: android map

这有什么好的示例代码吗? (在地图上显示照片缩略图)

以下是我自己尝试过的代码,但它不起作用: 如果找到缩略图路径,请将其设置为overlayitem的标记,否则使用默认标记。

问题是只显示带有defaultMarker的项目。超过100张照片,只找到1张照片的缩略图路径,似乎我检索缩略图的方式有点不正确。

如果你不介意,那就很啰嗦了。谢谢!

Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);

    PhotoOverlay itemizedoverlay = new PhotoOverlay(drawable, this);

    String selection = MediaStore.Images.ImageColumns.LATITUDE + " is not null";
    Cursor c = this.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, selection, null, null);

    while ( c.moveToNext()){

        int longitude = (int) (c.getDouble(c.getColumnIndex(MediaStore.Images.ImageColumns.LONGITUDE)) * 1e6);
        int latitude = (int) ( c.getDouble(c.getColumnIndex(MediaStore.Images.ImageColumns.LATITUDE))* 1e6);
        String title = c.getString(c.getColumnIndex(MediaStore.Images.ImageColumns.TITLE));
        String description = c.getString(c.getColumnIndex(MediaStore.Images.ImageColumns.DESCRIPTION));
        long imgId = c.getLong(c.getColumnIndex(MediaStore.Images.ImageColumns._ID));
        long thumbId = c.getLong(c.getColumnIndex(MediaStore.Images.ImageColumns.MINI_THUMB_MAGIC));

        GeoPoint point = new GeoPoint(latitude, longitude);
        OverlayItem overlayitem = new OverlayItem(point, title, description);

        //Cursor ct = Thumbnails.queryMiniThumbnail(this.getContentResolver(), imgId, Thumbnails.MICRO_KIND, null);
        String[] args =  new String[]{String.valueOf(thumbId)};
        Cursor ct = managedQuery(Thumbnails.EXTERNAL_CONTENT_URI, null, Thumbnails._ID + "= ?", args, null);

        if( ct.moveToFirst() ){
            String path = ct.getString(ct.getColumnIndex(Thumbnails.DATA));
            BitmapDrawable d = new BitmapDrawable(this.getResources(), path);

            itemizedoverlay.addOverlay(overlayitem, d);
        } else {
            itemizedoverlay.addOverlay(overlayitem, null);
        }

    }

    c.close();
    overlays.add(itemizedoverlay);

PhotoOverlay.addItem()

public void addOverlay(OverlayItem i, Drawable marker){

    if( marker != null ){
        i.setMarker(boundCenterBottom(marker));
    }

    mOverlays.add(i);
    populate();
}

1 个答案:

答案 0 :(得分:0)

检查以下链接

http://blog.pocketjourney.com/2008/03/19/tutorial-2-mapview-google-map-hit-testing-for-display-of-popup-windows/

我使用博客并相信我不仅可以在地图上绘制任何内容,还可以为视图设置动画。使用这个i implmented drop pin效果就像Android中的iPhone一样

使用Canvas和onDraw方法很难,但是处理事情的最佳和核心方法。

希望有所帮助:)