所以我有一个小问题,我似乎无法解决,我似乎也无法解决。
我有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()函数,则会添加该标记。
我认为这是由于函数是异步的,但是我真的不明白为什么这会成为问题。
谢谢。