0

Я использую Picasso для извлечения изображения растрового изображения для использования в качестве значка маркера, и оно применяется успешно. Но мне нужно динамически увеличить размер настраиваемого маркера для всех устройств. Поскольку с моим кодом ниже, он отлично работает на некоторых устройствах, но в некоторых других устройствах маркер очень большой.Динамически увеличивать размер пользовательского маркера на картах Google - Android

Вот мой код

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); 

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

+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() все зависит от вас. ;)

EDIT

Если ваша проблема находится на какой значения для передачи в зависимости от размера экрана, Вы можете обратиться к этим 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); 

- Это довольно хороший пример, просто измерить макет, чтобы использовать его в качестве ссылки на то, как вы будете изменять размер изображения.

+0

Да, я использую 'resize (84, 125)', и он хорошо работает на каком-то устройстве. Но я пробовал в некоторых других устройствах, маркеры очень большие. Но мне нужно динамически увеличить размер настраиваемого маркера для всех устройств. Поэтому при запуске этого приложения маркеры будут настраивать экран устройства. Что мне делать? –

+0

Вы должны подумать о формуле, которая предоставит нужные вам значения, где ширина и высота зависят от размера экрана. Я думаю, что это [ответ] (http://stackoverflow.com/a/4798597/4625829) может работать для вас. :) –