0

İşaretçi simgesi olarak kullanmak üzere Bitmap görüntüsünü almak için Picasso'yu kullanıyorum ve başarıyla uygulanıyor. Ancak, tüm cihazlar için özel işaretleyicinin boyutunu dinamik olarak artırmam gerekiyor. Aşağıdaki kodumla bazı cihazlarda iyi çalışıyor, ancak bazı cihazlarda, işaretleyici çok büyük.Google Haritalar'da özel işaretleyicinin boyutunu dinamik olarak artır - Android

İşte

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

sorunu gidermek için bana yardım edin benim kod.

Şimdiden teşekkürler.

+0

Herhangi bir çözüm var mı? herhangi bir çözüm büyük ölçüde takdir edilecektir. –

cevap

2

verilen koda göre, sadece bu çizgide resize() geçirilen değerini değiştirebilirsiniz:

enter image description here

:

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

Ben denedim kod aşağıdaki gösterir

Sonra, resize() içinde değerini tadil şöyle:

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

Ve böyle ortaya çıktı:

enter image description here

değer tüm size bağlıdır resize() geçmek. ;)

Endişeniz ekran boyutuna bağlı olarak, farklı bir yazı bu answer başvurabilir geçmek neyi değerine ise DÜZENLEME. İşte yazıyor -

Bunu LayoutParams kodu ile yapabilirsiniz. Ne yazık ki, XML aracılığıyla yüzdeleri belirtmenin bir yolu yoktur (doğrudan değil, ağırlıklar ile karışıklık yaratabilirsiniz, ancak bu her zaman yardımcı olmayacaktır ve en boy oranınızı korumaz), ancak bu sizin için çalışmalıdır:

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

- Oldukça iyi bir örnek, görüntüyü nasıl boyutlandıracağınıza dair referans olarak kullanmak için düzeni basitçe ölçün.

+0

Evet, 'resize (84, 125)' kullanıyorum ve bazı aygıtlarda iyi çalışıyor. Ama diğer bazı cihazlarda denedim, işaretleyiciler çok büyük. Ancak, tüm cihazlar için özel işaretleyicinin boyutunu dinamik olarak artırmam gerekiyor. Bu uygulamayı çalıştırırken, işaretçiler cihazın ekranını ayarlayacaktır. Ne yapmalıyım? –

+0

Aradığınız değerleri sağlayacak formülü düşünmelisiniz, burada genişlik ve yükseklik ekran boyutuna bağlıdır. Bence bu [cevap] (http://stackoverflow.com/a/4798597/4625829) senin için çalışabilir. :) –

İlgili konular