так что у меня есть небольшая проблема, которую я просто не могу решить, и я просто не могу ее понять.
У меня есть 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.
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), который вы видите выше
С другой стороны, если я вызываю ту же функцию setMarker () вне imageLoader.Функция loadImage (), но внутри функции downloadMarker () добавит маркер.
Я думаю, это связано с асинхронной функцией, но я действительно не понимаю, почему это может быть проблемой.
Заранее спасибо.