Dodaję znaczniki na mapie, aby z adresu URL za pomocą Picasso libraryDodawanie znaczników z URL z Picasso
jako marker nie jest ImageView Próbowałem użyć cel zamiast
for(int x =0; x < mapIcon_url.length; x++){
Picasso.with(getActivity()).load(mapIcon_url[x]).resize(marker_size, marker_size+15).into(new Target() {
@Override
public void onSuccess(Bitmap b) {
bitmapMarker = BitmapDescriptorFactory.fromBitmap(b);
//create marker option
if(b != null)
markerOptions = new MarkerOptions().position(marker_position).icon(bitmapMarker));
else
markerOptions = new MarkerOptions().position(marker_position).icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder_pin)).snippet(String.valueOf(x));
marker = map.addMarker(markerOptions);
}
@Override
public void onError() {
//create marker option
markerOptions = new MarkerOptions().position(marker_position).icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder_pin)).snippet(String.valueOf(x));
marker = map.addMarker(markerOptions);
}
});
}
I Robię to w pętli, aby dodać około 20 znaczników, ale uważam, że przy pierwszym uruchomieniu kodu dodawane są tylko znaczniki 5 lub 7, więc przełączyłem się na używanie biblioteki lib i AsyncTask w ten sposób.
for(int x =0; x < mapIcon_url.length; x++){
new AddMarker().execute(mapIcon_url[x]);
}
public class AddMarker extends AsyncTask<String, Integer, BitmapDescriptor> {
BitmapDescriptor bitmapMarker1;
VenueDetails myVenue;
@Override
protected BitmapDescriptor doInBackground(String... url) {
myUrl = url[0];
try {
bitmapMarker1 = BitmapDescriptorFactory.fromBitmap(Picasso.with(getActivity()).load(myUrl).resize(marker_size, marker_size+15).get());
} catch (IOException e) {
e.printStackTrace();
}
return bitmapMarker1;
}
protected void onPostExecute(BitmapDescriptor icon) {
try {
map.addMarker(new MarkerOptions().position(marker_position).icon(icon)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Jednak jestem trochę zaniepokojony ta metoda może dać mi jakieś problemy, kiedy mam dużo markerów powiedzieć o 100. Moje pytanie byłoby to jest najlepszym sposobem, aby to zrobić, a jeśli nie to, co inne opcje mogą Próbuję.
Skoncentruję się na debugowaniu pierwszego podejścia. Użyj punktów przerwania lub instrukcji rejestrowania, aby określić, gdzie nie można uzyskać znaczników. – CommonsWare
Użyłem instrukcji rejestrowania w metodach onSucess i onError override obiektu docelowego, także tuż przed wywołaniem klasy Picasso. Logi pokazały, że wygląd był wywoływany 20 razy, onSucess został wywołany kilka razy i onError nigdy nie zadzwonił. –
Jake właśnie wydał wczoraj Picasso 2.0.0 - możesz spróbować, jeśli jeszcze tego nie zrobiłeś. W przeciwnym razie możesz spróbować utworzyć powtarzalny przypadek testowy i zgłosić problem z projektem Picasso. Nie widzę konkretnego problemu z tym, co masz. – CommonsWare