Bir Android uygulamasını, sürüm 1'den android google maps API'sinin 2. sürümüne geçiriyorum. Sürüm 1 kodumda, aşağıdaki gibi draw() yöntemini geçersiz kılarak ItemizedOverlay alt sınıfımda doğrudan harita üzerinde metin çizebildim. Çizmek istediğim metin dinamiktir, her harita işaretçisinin yanında görüntülemek istediğim ek bir metin öğesidir, böylece farklı semboller çizilir/kaldırılırken metin sık sık eklenir/kaldırılır. Ancak, bu, API'nin 2. versiyonunda mümkün görünmemektedir. Bu kesinlikle bir ItemizedOverlays kavramı değildir ve hiçbir şey alt sınıflara ayrılmaz. Yeni API sürümünde GoogleMap'ta metin çizmenin bir yolu var mı?Metin Çizme artık Google Map'de mümkün değil mi?
cevap
Aynı sorun vardı, v1'den v2'ye yükseltmeye çalışıyorum. Sonunda bir işaretleyici kullandım, metinle bir Bitmap oluşturdum ve onu işaretleyicinin simgesi olarak kullandım.
Her şeyden önce, metin ile de Bitmap oluşturmalısınız. Not: Metin özellikleri (renk, yazı tipi, TextAlign, ...)
Rect boundsText = new Rect();
paintText.getTextBounds(strText, 0, strText.length(), boundsText);
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmpText = Bitmap.createBitmap(boundsText.width(), boundsText.height(), conf);
Sonra metin çizim için Tuval kullanmak ile paintText yapılandırın. Bu tuval dimension ile biraz çılgınlık düzeltme metni.
Canvas canvasText = new Canvas(bmpText);
canvasText.drawText(strText, canvasText.getWidth()/2, canvasText.getHeight(), paintText);
Nihayet size yardımcı olabilecek Umut
MarkerOptions markerOptions = new MarkerOptions()
.position(latlngMarker)
.icon(BitmapDescriptorFactory.fromBitmap(bmpText))
.anchor(0.5f, 1);
MarkerOption
simgeyi oluşturmak için Bitmap kullanın. Aşağıdaki kodu kullanarak Görünümü bir Marker oluşturabilirTeşekkürler! Bu mükemmel çalışıyor. Sadece bir not: "canvasText.getHeight(), paintNameBackground) satırı;' (2d blok) yanlış - hatalı kopyala/yapıştır? Neyse, amacının ne olduğunu bilmiyorum ama gayet iyi çalışıyor. – psycho
Haklıydınız @psycho, değiştirdim, teşekkürler! – jgonza73
@ jgonza73 Hangi sınıf "paintText" örneğidir? Bunu nasıl yapıyorsun? –
:
public static Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
Kaynak: http://www.nasc.fr/android/android-using-layout-as-custom-marker-on-google-map-api/
düzenleme: Tek bir işaretleyici daha kullanırsanız, yapmayın emin olun DisplayMetrics ve her işaretçi için kurulum öğelerini (Bitmap bitmap = ..... üzerindeki her şey) görüntüleyin. Bu, uygulamanızı önemli ölçüde yavaşlatır.
Bu çözümü denedim ama çok yavaş! – GeniDeveloper
- 1. org.apache.http.entity.ContentType artık Apache'de değil mi?
- 2. Class.forName (JDBC_DRIVER) artık gerekli değil mi?
- 3. Rgraphviz artık R için mevcut değil mi?
- 4. ES6 Array kavrayışları artık geçerli değil mi?
- 5. OnActionExecuting (FilterExecutingContext), System.Web.Mvc'de artık mevcut değil mi?
- 6. Dinamik Nesneler mümkün değil mi?
- 7. Dinamik formda etkinlik eklemek mümkün değil mi?
- 8. mümkün değil
- 9. Fırtına sürüm indirme sitesi artık erişilebilir değil mi?
- 10. U2U Caml Sorgulama Oluşturucusu artık mevcut değil mi?
- 11. Merkezde oval yol üzerinde metin çizme
- 12. SQL NOSQL karışımı mümkün mü değil mi?
- 13. Google haritaya otobüs güzergahı çizme
- 14. Çekirdeği dökmek mümkün mü, süreçten çıkmak mümkün değil mi?
- 15. Delphi - Metnin ortasında çok satırlı metin çizme
- 16. iOS'ta metin ve renginin altını çizme
- 17. Artık bitbucket kullanamazsınız. Bağlantınız güvenli değil
- 18. RegularExpressionAttribute devralmaya çalışırken, artık geçerli değil
- 19. textview metninde çizgi çizme
- 20. Google Maps API v3'te özel metin yazmak mümkün mü?
- 21. document.domain'i herokuapp.com olarak ayarlamak mümkün değil mi? Nasıl?
- 22. . Net expando nesnesi ve LINQ. Mümkün mü değil mi?
- 23. Başlık varlıklarında HTML varlıkları kullanmak mümkün değil mi?
- 24. R 2.14 bayt derlemesi - install.packages ile mümkün değil mi?
- 25. angular2 Kesinlikle Replekste değil mi?
- 26. mümkün değil - Django
- 27. mümkün değil setUpClass
- 28. Dizinleri kaldırmak mümkün değil.
- 29. Mümkün dll mümkün değil (pdb kullanılabilir)
- 30. kısa çizgi ile bir sandık artık artık
'GroundOverlay 've' TileOverlay''a baktınız mı? – CommonsWare
Sınıfların açıklamalarına baktım. Görünüşe göre, statik görüntüleri üst üste koymak için geliyorlar ve aradığım amaç için değil. –
Bu doğru olabilir, ama ya bu işlerden birini yapmanın bir yolunu bulacağınızdan şüpheliyim, ya da şansın kalmadı. – CommonsWare