刷新谷歌地图上的标记,以在Android中的标记上查看图像

时间:2014-10-07 10:15:28

标签: android google-maps-android-api-2

我是新手,我正在开发一个跟踪员工位置并在地图上显示的Android应用程序。它几乎完成了,除了它没有在标记上显示员工的图像。

我能够在网上下载图像并在标记上设置该图像。但问题是,它不会自动显示。我需要再次绘制坐标才能显示图像。这是我用来下载并在标记上设置图像的代码......

    private class DownloadEmployeeImage extends AsyncTask<String, Void, Bitmap> {

    ImageView image;

    public DownloadEmployeeImage(ImageView bmImage) {

        this.image = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {

        String url = urls[0];
        Bitmap bmpImg = null;

        try {

            InputStream in = new java.net.URL(url).openStream();
            bmpImg = BitmapFactory.decodeStream(in);

        } catch (Exception e) { 

            Log.e("Failed to download image: ", e.toString());
        }           

        return bmpImg;
    }

    protected void onPostExecute(Bitmap bmpImg) {

        try {

            image.setImageBitmap(RoundedImageView.getCroppedBitmap(bmpImg, 200));                               

        } catch(Exception e) {

            image.setImageBitmap(RoundedImageView.getCroppedBitmap(BitmapFactory
                    .decodeResource(MainActivity.this.getResources(), R.drawable.ic_user_placeholder), 200));               
        }
    }
}   

在标记上下载并设置图像后,我在地图上添加了标记

    View viewLocationMarker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layout_location_marker, null);
    ImageView ivPictureLocationMarker = (ImageView) viewLocationMarker.findViewById(R.id.ivPictureLocationMarker);

    new DownloadEmployeeImage(ivPictureLocationMarker).execute(TheURLOfTheImage);       

    Marker locationMarker = googleMap.addMarker(new MarkerOptions()
    .position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1)
    .icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib
            .createDrawableFromView(MainActivity.this, viewLocationMarker))));

关于我该如何做到这一点的任何好主意?

2 个答案:

答案 0 :(得分:1)

好的我觉得问题出现在下面的代码中

new DownloadEmployeeImage(ivPictureLocationMarker).execute(TheURLOfTheImage);

Marker locationMarker = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1)
.icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib
        .createDrawableFromView(MainActivity.this, viewLocationMarker))));

在此代码中,您下载图像(调用asynktask)并按顺序在标记上设置图像,但实际上两个进程并行工作。你的问题是怎么回事?我会详细解释。 看到你调用Asynctask然后它在后端工作,它的下面的代码执行。所以在这里你要求加载图像,然后加载系统设置marker.so在这种情况下只需设置标记 在OnPostexecute(...){

Marker locationMarker = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude)).title(name).anchor(0.33f, 1)
.icon(BitmapDescriptorFactory.fromBitmap(TarkieManagerLib
        .createDrawableFromView(MainActivity.this, viewLocationMarker))));

此处还在地图上设置标记....

} 多数民众赞成......

答案 1 :(得分:0)

您必须使用自定义标记在标记上显示图像。按以下链接:

Google Maps Android API v2 - Interactive InfoWindow (like in original android google maps)