Po krótkim rozejrzeniu się, wymyśliłem następującą odpowiedź (do zmiany rozmiaru użyłem code from this blog).
I overrode tę samą metodę stosowaną powyżej, z pewnymi różnicami:
- zamiast metody drawCircle użyłem metody drawBitmap
- Nie używać obiektu farby
- I przełączaną cyklicznie nad nakładki pozycji, aby zmienić rozmiar znaczników
kończy się tak:
for(OverlayItem currentPoint:mOverlays){
geopoint =currentPoint.getPoint();
Point point = new Point();
projection.toPixels(geopoint, point);
BitmapDrawable bitDraw= ((BitmapDrawable)currentPoint.getMarker(0));
Drawable currentMarker = currentPoint.getMarker(0);
/*if (currentMarker!=null){
if (currentWidthRatio<.6f) {
currentWidthRatio = .6f;
}
else if (currentWidthRatio>1.5f) {
currentWidthRatio = 1.5f;
}
}*/
if (bitDraw!=null){
Bitmap bitmap = getResizedBitmap(bitDraw.getBitmap(),(int)(currentMarker.getIntrinsicHeight() * currentWidthRatio),
(int)(currentMarker.getIntrinsicWidth()*currentWidthRatio));
canvas.drawBitmap(bitmap,
point.x - bitmap.getHeight()/2,
point.y - bitmap.getWidth()/2, null);
}else{
Log.println(Log.DEBUG,"non-existent point", "");
}
}
Ostrożnie! Metoda currentPoint.getMarker (0) pobiera, jak sama nazwa wskazuje, dane bieżącego znacznika. Oznacza to, że masz pierwotny rozmiar, a nie sposób, w jaki się urósł (lub zmniejszył). Trzeba mieć jakiś sposób do:
- sklepie oryginalny rozmiar mapy
- sprawdzić jak to się zmieniło od (stosunek)
Kod ja wykomentowane obsługuje maksymalną i minimalną zmianę rozmiaru Chcę pozwolić (aby znaczniki były widoczne bez nakładania się/pozostały czytelne dla ludzkiego oka).
Mam nadzieję, że to pomoże!
Dodaję do mapy znaczniki do rysowania, jak mogę zmienić rozmiar na podstawie poziomu powiększenia – Mani