質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

1802閲覧

GoogleMap UtilライブラリでonBeforeClusterItemRenderedとonBeforeClusterRenderedが呼ばれない

engineer_tour

総合スコア9

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2015/08/07 02:47

現在マップ上にサムネイルをオーバーレイっぽく表示させるため、
以下のライブラリを使ってコードを書いていたのですが、なぜかマップ上にサムネイルが表示されません。
https://github.com/googlemaps/android-maps-utils
http://googlemaps.github.io/android-maps-utils/

ちなみにこのライブラリのサンプル内で使っているDrawableはリソース内から持ってきているのですが、自分はWebから持ってきていて、

Java

1Bitmap bmp = Picasso(context).load(imageUrl).get(); 2Drawable drawable = new BitmapDrawable(bmp);

という感じで取ったものをfor文で回して配列にsetしています。

Java

1compile 'com.google.maps.android:android-maps-utils:0.4+' 2compile 'com.google.android.gms:play-services:7.5.0'

Java

1//オーバーレイの一個にあたるクラス 2public class PhotoLog implements ClusterItem { 3 4 public final String restname; 5 public final String datetime; 6 public final PostData userdata; 7 public final Drawable drawable; 8 private final LatLng position; 9 10 public PhotoLog(PostData user, Drawable drawable) { 11 restname = user.getRestname(); 12 position = new LatLng(user.getLat(), user.getLon()); 13 datetime = user.getPost_date(); 14 userdata = user; 15 this.drawable = drawable; 16 } 17 18 @Override 19 public LatLng getPosition() { 20 return mPosition; 21 } 22}

Java

1@Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_map); 5 6 mAsync = new MapDrawableAsync(new MapDrawableAsync.Callback() { 7 @Override 8 public void onFinish() { 9 //googleserviceが使えるか判断して処理を分ける 10 int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(ProfMapActivity.this); 11 if (status != ConnectionResult.SUCCESS) { 12 // Google Play Services が使えない場合 13 int requestCode = 10; 14 Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, ProfMapActivity.this, requestCode); 15 dialog.show(); 16 } else { 17 // Google Play Services が使える場合 18 //activity_main.xmlのSupportMapFragmentへの参照を取得 19 fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 20 fm.getMapAsync(readyCallback); 21 } 22 } 23 }, this); 24 mAsync.execute(); 25 26 Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); 27 //toolbar.inflateMenu(R.menu.toolbar_menu); 28 //toolbar.setLogo(R.drawable.ic_gocci_moji_white45); 29 toolbar.setTitle("マップ"); 30 setSupportActionBar(toolbar); 31 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 32 } 33@Override 34 protected void onDestroy() { 35 mAsync.cancel(true); 36 super.onDestroy(); 37 }

Java

1//mapが準備完了した時のコールバック 2OnMapReadyCallback readyCallback = new OnMapReadyCallback() { 3 @Override 4 public void onMapReady(GoogleMap googleMap) { 5 mMap = googleMap; 6 mMap = fm.getMap(); 7 mMap.setMyLocationEnabled(true); 8 mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 9 10 mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(35.681382, 139.766084), 4)); 11 12 mClusterManager = new ClusterManager<PhotoLog>(ProfMapActivity.this, mMap); 13 mClusterManager.setRenderer(new PhotoLogRenderer()); 14 mMap.setOnCameraChangeListener(mClusterManager); 15 mMap.setOnMarkerClickListener(mClusterManager); 16 mMap.setOnInfoWindowClickListener(mClusterManager); 17 mClusterManager.setOnClusterClickListener(ProfMapActivity.this); 18 mClusterManager.setOnClusterInfoWindowClickListener(ProfMapActivity.this); 19 mClusterManager.setOnClusterItemClickListener(ProfMapActivity.this); 20 mClusterManager.setOnClusterItemInfoWindowClickListener(ProfMapActivity.this); 21 mClusterManager.addItems(list); 22 mClusterManager.cluster(); 23 } 24 };

Java

1private class PhotoLogRenderer extends DefaultClusterRenderer<PhotoLog> { 2 private final IconGenerator mIconGenerator = new IconGenerator(getApplicationContext()); 3 private final IconGenerator mClusterIconGenerator = new IconGenerator(getApplicationContext()); 4 private final ImageView mImageView; 5 private final ImageView mClusterImageView; 6 private final int mDimension; 7 8 public PhotoLogRenderer() { 9 super(getApplicationContext(), mMap, mClusterManager); 10 11 View multiProfile = getLayoutInflater().inflate(R.layout.cell_photolog, null); 12 mClusterIconGenerator.setContentView(multiProfile); 13 mClusterImageView = (ImageView) multiProfile.findViewById(R.id.image); 14 15 mImageView = new ImageView(getApplicationContext()); 16 mDimension = (int) getResources().getDimension(R.dimen.photolog_size); 17 mImageView.setLayoutParams(new ViewGroup.LayoutParams(mDimension, mDimension)); 18 int padding = (int) getResources().getDimension(R.dimen.photolog_padding); 19 mImageView.setPadding(padding, padding, padding, padding); 20 mIconGenerator.setContentView(mImageView); 21 } 22 23 @Override 24 protected void onBeforeClusterItemRendered(PhotoLog photolog, MarkerOptions markerOptions) { 25 //呼ばれない 26 mImageView.setImageDrawable(photolog.mDrawable); 27 Bitmap icon = mIconGenerator.makeIcon(); 28 markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(photolog.mRestname + "(" + photolog.mDatetime + ")"); 29 } 30 31 @Override 32 protected void onBeforeClusterRendered(Cluster<PhotoLog> cluster, MarkerOptions markerOptions) { 33 //呼ばれない 34 List<Drawable> profilePhotos = new ArrayList<Drawable>(Math.min(4, cluster.getSize())); 35 int width = mDimension; 36 int height = mDimension; 37 38 for (PhotoLog p : cluster.getItems()) { 39 // Draw 4 at most. 40 if (profilePhotos.size() == 4) break; 41 Drawable drawable = p.mDrawable; 42 drawable.setBounds(0, 0, width, height); 43 profilePhotos.add(drawable); 44 } 45 MultiDrawable multiDrawable = new MultiDrawable(profilePhotos); 46 multiDrawable.setBounds(0, 0, width, height); 47 48 mClusterImageView.setImageDrawable(multiDrawable); 49 Bitmap icon = mClusterIconGenerator.makeIcon(String.valueOf(cluster.getSize())); 50 markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)); 51 } 52 53 @Override 54 protected boolean shouldRenderAsCluster(Cluster cluster) { 55 // Always render clusters. 56 return cluster.getSize() > 1; 57 } 58 }

Java

1private static class MapDrawableAsync extends AsyncTask<Void, Void, Void> { 2 3 private Callback callbackRef; 4 private Context context; 5 6 private MapDrawableAsync(Callback callback, Context context) { 7 callbackRef = callback; 8 this.context = context; 9 } 10 11 @Override 12 protected Void doInBackground(Void... params) { 13 for (PostData data : profList) { 14 try { 15 //List<PhotoLog> list = new ArrayList<>; 16 list.add(new PhotoLog(data, new BitmapDrawable(Picasso.with(context).load(data.getThumbnail()).get()))); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 } 21 return null; 22 } 23 24 @Override 25 protected void onPostExecute(Void result) { 26 callbackRef.onFinish(); 27 } 28 29 private interface Callback { 30 void onFinish(); 31 } 32 }

全体のコードは以上になるのですが、
このコードのonBeforeClusterItemRenderedとonBeforeClusterRenderedが呼ばれないため、ダウンロードしたdrawableがImageViewにsetされてないようです。
ちなみに、ダウンロードは正常に動作していて、bitmapでダウンロード出来ているのは確認済みです。

分かる方いましたら、ご教授頂ければ幸いです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決

投稿2015/08/07 06:38

engineer_tour

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問