在谷歌地图中我想要显示10-15个标记的多个标记,但这些标记需要一些时间才能在地图上显示。请看一下我的代码
Bitmap markerBitmap;
Picasso.with(getContext())
.load(R.drawable.marker_icon)
.resize(markerSize, markerSize)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
markerBitmap=bitmap;
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
for(int i=0; i<10;i++){
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.rotation((float) bearing);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(markerBitmap));
map.addMarker(markerOptions);
}
答案 0 :(得分:0)
它可能是一系列事件&#34;问题
你打开一个从资源加载图片的请求,然后当资源加载结束时,你设置了一个BitmapMarker(我不知道你是怎么做的,任何进入anonoymous内部类的对象必须是最终的,并且可以& #39; t被改变)。
创建请求后,您尝试创建10个标记。 (无论请求是否结束)
解决方案可能是在请求结束时推迟添加标记。我们鼓励您阅读函数式编程以了解原因。
Picasso.with(getContext())
.load(R.drawable.marker_icon)
.resize(markerSize, markerSize)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Bitmap markerBitmap;
markerBitmap=bitmap;
for(int i=0; i<10;i++){
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.rotation((float) bearing);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(markerBitmap));
map.addMarker(markerOptions);
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
答案 1 :(得分:0)
这是解决我的问题的解决方法。
@Override
public void onMapReady(GoogleMap googleMap) {
if(googleMap!=null){
Picasso.with(getContext())
.load(R.drawable.marker_icon)
.resize(markerSize, markerSize)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Bitmap markerBitmap;
markerBitmap=bitmap;
for(int i=0; i<10;i++){
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.rotation((float) bearing);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(markerBitmap));
map.addMarker(markerOptions);
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
}