动态增加谷歌地图中自定义标记的大小 - Android

时间:2016-03-27 03:30:53

标签: android google-maps-markers google-maps-android-api-2 picasso

我使用Picasso检索Bitmap图像以用作标记图标并成功应用。但我需要动态增加所有设备的自定义标记的大小。因为我的代码在下面,它在某些设备上运行良好,但在其他设备中,标记非常大。

这是我的代码

dest = new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude());
markerOption = new MarkerOptions().position(dest);
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);

请帮我解决问题。

提前致谢。

1 个答案:

答案 0 :(得分:2)

根据您提供的代码,您只需修改此行中resize()中传递的值:

Picasso.with(MapsActivity.this).load(myMarker.getmIcon()).resize(84, 125).into(target);

我试了一下,你的代码显示了这个:

enter image description here

然后我修改了resize()中的值,如下所示:

Picasso.with(MapsActivity.this).load(myMarker.getmIcon()).resize(184, 1125).into(target);

结果是这样的:

enter image description here

传递给resize()的价值取决于你。 ;)

  

修改

如果您根据屏幕尺寸关注 值,则可以从其他帖子中引用此answer。这就是它所说的 -

您可以在代码中使用LayoutParams执行此操作。不幸的是,没有办法通过XML指定百分比(不是直接,你可以搞乱权重,但这并不总是有帮助,它不会保持你的宽高比),但这应该适合你:

//assuming your layout is in a LinearLayout as its root
LinearLayout layout = (LinearLayout)findViewById(R.id.rootlayout);

ImageView image = new ImageView(this);
image.setImageResource(R.drawable.image);

int newHeight = getWindowManager().getDefaultDisplay().getHeight() / 2;
int orgWidth = image.getDrawable().getIntrinsicWidth();
int orgHeight = image.getDrawable().getIntrinsicHeight();

//double check my math, this should be right, though
int newWidth = Math.floor((orgWidth * newHeight) / orgHeight);

//Use RelativeLayout.LayoutParams if your parent is a RelativeLayout
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    newWidth, newHeight);
image.setLayoutParams(params);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
layout.addView(image);

- 这是一个很好的例子,只需测量布局,将其用作如何调整图像大小的参考。