私はプログラムでカスタムインフォウィジェットをレイアウトしようとしています。 Picasaを使用してstreetViewプレビュー画像を読み込みたいのですが、画像が表示されないのはなぜですか?ピカソ画像がカスタムinfoWindowに読み込まれない理由は何ですか?
private View prepareInfoView(Marker marker){
//prepare InfoView programmatically
LinearLayout infoView = new LinearLayout(EarthquakeActivity.this);
LinearLayout.LayoutParams infoViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
infoView.setOrientation(LinearLayout.VERTICAL);
// attach the above layout to the infoView
infoView.setLayoutParams(infoViewParams);
//create street view preview @ top
ImageView streetViewPreviewIV = new ImageView(EarthquakeActivity.this);
// this scales the image to match parents WIDTH?, but retain image's height??
LinearLayout.LayoutParams streetViewImageViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
streetViewPreviewIV.setLayoutParams(streetViewImageViewParams);
String imageURL = "https://maps.googleapis.com/maps/api/streetview?size=200x200&location=";
String markerLongitude = Double.toString(marker.getPosition().longitude);
String markerLatitude = Double.toString(marker.getPosition().latitude);
imageURL += markerLatitude + "," + markerLongitude + "&fov=120&heading=0&pitch=0";
Log.wtf("prepareInfoView", imageURL);
Picasso.with(this).load(imageURL).into(streetViewPreviewIV);
infoView.addView(streetViewPreviewIV);
uriを追加するapiキーの有無にかかわらず試しました。
キーを使用しないで数回クリックするだけで動作しましたが、それ以降はありません。あまりにも遅いため、Androidはそれを使わずに情報ウィンドウを放棄して読み込むことができるからですか?これを行うクラスの方法で最高ですか?
別の画像読み込みライブラリがうまく機能しますか? Googleのボレーですか?
は、また
LinearLayout.LayoutParams
と私はすなわちmatch_parent情報ウィンドウの幅を横切ってストレッチする画像のようにしたい、と元の縦横比を維持するために、垂直方向に拡張しますどうすればいいですか?
これは私がこのフラグを追加私の答えcommonsWare新しいクラスで
です:
@Override
public void onSuccess() {
Log.i(TAG, "image got, should rebuild window");
if (marker != null && marker.isInfoWindowShown()) {
Log.i(TAG, "conditions met, redrawing window");
marker.setTag(new Boolean("True"));
marker.showInfoWindow();
}
}
そしてprepareInfoViewで、私は旗の欠如のためにテストします。
if (marker.getTag() == null) {
Log.i("prepareInfoView", "fetching image");
Picasso.with(this).load(imageURL).fetch(new MarkerCallback(marker));
}
else {
Log.wtf("prepareInfoView", "building info window");
パーティー! :)
おかげCommonsWare、非常に有益を必要とするかどうかを確認するためにそれを使用するよう、最新の画像を追跡します。私はあなたのソリューションが好きで、それを実装しましたが、無限ループを引き起こします!それは画像を何度も繰り返し取得し続けます。あまりにもあなたの注意のためにありがとうございます:) –
@トニースターク:ああ、ええ、おそらくこれを回避する私の全体的なアダプタのいくつかのビットがあります。ここでは、サンプルプロジェクト全体です:https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/ImagePopups – CommonsWare
ありがとうCommonsWare、私は実際に元のコードが働いて、ちょうど、ブールを転送するために、marker.setTagを使用している旗を横切って私は答えに質問を更新し、あなたに信用します。ある日私はcommonsWare masterfulになりたい:) –