カスタムマーカーを使用してアンドロイドマップビューを実装しています。私はマーカービューに画像を読み込むためにピカソを使用しています。しかし、マップは、私に必要なマーカーを私に示していません。カスタムマップマーカーポイントがピカソでロードされていません
ここに私のコードここ
i = getIntent();
if(i.getBooleanExtra("maps", true)) {
mactionBar.setSubtitle(i.getStringExtra("nama"));
mMyMarkersArray.add(new MyMarker(i.getStringExtra("nama"), i.getStringExtra("deskripsi"), i.getStringExtra("foto"), i.getStringExtra("marker"), Double.parseDouble(i.getStringExtra("lat")), Double.parseDouble(i.getStringExtra("lng"))));
plotMarkers(mMyMarkersArray);
}
画像マーカをロードするためのコードです。 if(i.getBooleanExtra("maps", true))
を実装しています。このマップビューにつながる2つのアクティビティがあるためです。直前のアクティビティが真の値を入力した場合は、マーカーデータが1つだけ表示されます。しかし、値がfalseの場合、すべてのマーカーデータが表示されます。 mapsviewは、偽の価値をもたらす以前の活動から得たものであれば、私が必要としていたすべてのマーカーを表示します。しかし、実際の価値をもたらす活動から得たものであれば、mapsviewは私にマーカーを表示しません。
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 target = new PicassoMarker(location_marker);
targets.add(target);
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());
}
}
}
}
ここで私はMapsActivity
buttonNavigasi = (AppCompatButton) findViewById(R.id.button2);
buttonNavigasi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(DetailActivity.this,MapsActivity.class);
i.putExtra("nama", daftarNama);
i.putExtra("deskripsi", daftarDeskripsi);
i.putExtra("foto", daftarFoto);
i.putExtra("marker", daftarMarker);
i.putExtra("lng", daftarLng);
i.putExtra("lat", daftarLat);
i.putExtra("maps", true);
startActivity(i);
}
});
ここplotMarkersここで間違って何
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 target = new PicassoMarker(location_marker);
targets.add(target);
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());
}
}
}
}
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) {
}
}
の方法がありますを呼び出す方法についてのコードですか?
ありがとうございました。
のように私のコードを変更: '場合(i.getBooleanExtra(「マップ」、真))'と私はまだそれが何の目的であるかわからないのですか?なぜあなたはその価値をチェックしているあなたの投稿に含めることができますか? –
私のポストをもう一度チェックしてください。 –
'MapsActivity'の呼び出し方法にコードスニペットを含めることができますか?また、 'if(i.getBooleanExtra(" maps "、true))'をどこで呼び出していますか? 'onCreate()'では.. –