我正在使用Custom標記實現android Mapview。我正在使用picasso將圖像加載到標記視圖中。當我第一次啓動應用程序時,它會向我顯示所有標記,但只有一個從數據庫加載畢加索的標記,其他標記不會從數據庫加載,它們僅向我顯示默認地圖標記引腳。但是,當我進入之前的活動並返回到MapsActivity時,它向我展示了使用畢加索從數據庫加載的所有標記。第一次加載picasso的地圖標記點圖像
這裏是我的PicassoMarker類
public class PicassoMarker implements Target {
Marker mMarker;
PicassoMarker(Marker marker) {
mMarker = marker;
}
@Override
public int hashCode() {
return mMarker.hashCode();
}
@Override
public boolean equals(Object o) {
if(o instanceof PicassoMarker) {
Marker marker = ((PicassoMarker) o).mMarker;
return mMarker.equals(marker);
} else {
return false;
}
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
mMarker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
//mMarker.setIcon(BitmapDescriptorFactory.fromResource(R.mipmap.here));
}
}
這裏的方法MapsActivity
public void plotMarkers(ArrayList<MyMarker> markers) {
if(markers.size() > 0) {
for (MyMarker myMarker : markers)
{
markerOption = new MarkerOptions().position(new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude()));
location_marker = mMap.addMarker(markerOption);
target = new PicassoMarker(location_marker);
Picasso.with(MapsActivity.this).load(myMarker.getmIcon()).resize(84, 125).into(target);
mMarkersHashMap.put(location_marker, myMarker);
i = getIntent();
if(i.getBooleanExtra("maps", true)) {
buttonNavigasi.setVisibility(View.VISIBLE);
location_marker.setTitle(i.getStringExtra("nama"));
dest = new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude());
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(dest, 16));
}
else {
mMap.setInfoWindowAdapter(new MarkerInfoWindowAdapter());
}
}
}
}
什麼錯嗎?
謝謝。
我不能完全肯定這一點,因爲我無法測試它在我的結束,但你有沒有嘗試調用這些行'target = new PicassoMarker(location_marker); (TargetActivity.this).load(myMarker.getmIcon())。resize(84,125).into(target);'location_marker = mMap.addMarker(markerOption)之前''' –
你可以試試看,並告訴我,如果它以某種方式工作..? –
是的,我試過了,但是我得到了同樣的結果。 –