如何将Google Maps标记异步添加到地图?

时间:2018-06-24 16:05:30

标签: java android google-maps

所以我有一个小问题,我似乎无法解决,我似乎也无法解决。

我有2个功能。

只需将google maps标记添加到地图。

private void setMarker() {
    Marker marker = mMap.addMarker(new MarkerOptions()
            .position(latlng)
            .snippet(artesao.getId())
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))
            .title(artesao.getName()));
}

另一个是从URI下载图像,将其转换为位图并添加画布。下载后,我想将此图像传递到setMarker()函数上,以替换常规的Google Maps Red Marker。

private void downloadMarker() {
    imageLoader.loadImage(artigo.getPhotoURL(), new SimpleImageLoadingListener() {
        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

            Bitmap.Config conf = Bitmap.Config.ARGB_8888;
            Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
            Canvas canvas1 = new Canvas(bmp);

            Paint color = new Paint();
            color.setTextSize(35);
            color.setColor(Color.BLACK);


            canvas1.drawBitmap(loadedImage, 0,0, color);
            canvas1.drawText("User Name!", 30, 40, color);
            img.setImageBitmap(loadedImage);

            setMarker();
        }
    });
}

该函数中的大多数事物与该问题无关

此函数将起作用,它将调用setMarker(),但不会将标记本身添加到地图中,尽管该函数中的所有其他内容都将按预期工作。图片也正在加载中,因为我已经在上面看到的img.setImageBitmap(bmp)对其进行了测试

另一方面,如果我在imageLoader.loadImage()函数外部但在downloadMarker()函数内部调用相同的setMarker()函数,则会添加该标记。

我认为这是由于函数是异步的,但是我真的不明白为什么这会成为问题。

谢谢。

0 个答案:

没有答案