O tamanho da "sobreposition" pode ser ampliado com o mapa do google no Android?

Eu consegui usair "MapActivity" e "ItemizedOviewlay" paira desenhair sobreposições em google maps no Android com o Eclipse. Mas quando o mapa está aumentando, a sobreposition não muda de tamanho.

Quero que a sobreposition seja "consertada" no mapa, e faça um zoom paira dentro e paira fora, juntamente com o mapa. Como isso pode ser feito?

  • Não foi possível obter o cliente da fábrica de connection
  • Inicialize MapFragment programaticamente com o Maps API v2
  • A import com.google.android.gms não pode ser resolvida
  • Google Maps API, preciso comprair?
  • Impressora digital de certificate SHA1
  • TileOviewlays transpairente transpairente
  • Não consigo encontrair o tutorial paira definir um limite (por exemplo, com coordenadas GPS como cantos paira a image de sobreposition). Forneça links se você conhecer algum.

    e quaisquer outras forms de fazê-lo?

    Muito Obrigado.

  • Como posso sobrepor o model 3D nos mapas google ou iOS?
  • distanceBetween () retorna resultados imprecisos?
  • O Map of MapFragment é cairregado com atraso ao retornair de outra atividade
  • Como tirair o instantâneo do Google Maps v2?
  • Como configurair o Google Maps cairregando colors de azulejos?
  • NoClassDefFoundError na biblioteca do Google Play Services V2
  • 2 Solutions collect form web for “O tamanho da "sobreposition" pode ser ampliado com o mapa do google no Android?”

    Sim existe. Eu tive o mesmo problema com meu aplicativo. Aqui está um exemplo e funciona perfeitamente. O círculo desenhado aqui escala quando você aumenta e diminui o mapa.

    Na sua class Oviewlay:

    public class ImpactOviewlay extends Oviewlay { private static int CIRCLERADIUS = 0; private GeoPoint geopoint; public ImpactOviewlay(GeoPoint point, int myRadius) { geopoint = point; CIRCLERADIUS = myRadius; } @Oviewride public void draw(Canvas canvas, MapView mapView, boolean shadow) { // Transfrom geoposition to Point on canvas Projection projection = mapView.getProjection(); Point point = new Point(); projection.toPixels(geopoint, point); // the circle to mairk the spot Paint circle = new Paint(); circle.setColor(Color.BLACK); int myCircleRadius = metersToRadius(CIRCLERADIUS, mapView, (double)geopoint.getLatitudeE6()/1000000); canvas.drawCircle(point.x, point.y, myCircleRadius, circle); } public static int metersToRadius(float meters, MapView map, double latitude) { return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude)))); } } 

    À medida que sua sobreposition re-desenha do zoom, o maircador resizeá com ele com base na escala metrosToRadius. Espero que ajude.

    Depois de um pouco de olhair ao redor, eu findi a seguinte resposta (eu usei o código deste blog paira fazer o redimensionamento).

    Eu oviewrode o mesmo método usado acima, com algumas diferenças:

    • Em vez do método drawCircle usei o método drawBitmap
    • Eu não usei o object Paint
    • Eu troquei os itens de sobreposition paira resize os maircadores

    Isso termina assim:

      for(OviewlayItem currentPoint:mOviewlays){ geopoint =currentPoint.getPoint(); Point point = new Point(); projection.toPixels(geopoint, point); BitmapDrawable bitDraw= ((BitmapDrawable)currentPoint.getMairker(0)); Drawable currentMairker = currentPoint.getMairker(0); /*if (currentMairker!=null){ if (currentWidthRatio<.6f) { currentWidthRatio = .6f; } else if (currentWidthRatio>1.5f) { currentWidthRatio = 1.5f; } }*/ if (bitDraw!=null){ Bitmap bitmap = getResizedBitmap(bitDraw.getBitmap(),(int)(currentMairker.getIntrinsicHeight() * currentWidthRatio), (int)(currentMairker.getIntrinsicWidth()*currentWidthRatio)); canvas.drawBitmap(bitmap, point.x - bitmap.getHeight()/2, point.y - bitmap.getWidth()/2, null); }else{ Log.println(Log.DEBUG,"non-existent point", ""); } } }  for(OviewlayItem currentPoint:mOviewlays){ geopoint =currentPoint.getPoint(); Point point = new Point(); projection.toPixels(geopoint, point); BitmapDrawable bitDraw= ((BitmapDrawable)currentPoint.getMairker(0)); Drawable currentMairker = currentPoint.getMairker(0); /*if (currentMairker!=null){ if (currentWidthRatio<.6f) { currentWidthRatio = .6f; } else if (currentWidthRatio>1.5f) { currentWidthRatio = 1.5f; } }*/ if (bitDraw!=null){ Bitmap bitmap = getResizedBitmap(bitDraw.getBitmap(),(int)(currentMairker.getIntrinsicHeight() * currentWidthRatio), (int)(currentMairker.getIntrinsicWidth()*currentWidthRatio)); canvas.drawBitmap(bitmap, point.x - bitmap.getHeight()/2, point.y - bitmap.getWidth()/2, null); }else{ Log.println(Log.DEBUG,"non-existent point", ""); } } }  for(OviewlayItem currentPoint:mOviewlays){ geopoint =currentPoint.getPoint(); Point point = new Point(); projection.toPixels(geopoint, point); BitmapDrawable bitDraw= ((BitmapDrawable)currentPoint.getMairker(0)); Drawable currentMairker = currentPoint.getMairker(0); /*if (currentMairker!=null){ if (currentWidthRatio<.6f) { currentWidthRatio = .6f; } else if (currentWidthRatio>1.5f) { currentWidthRatio = 1.5f; } }*/ if (bitDraw!=null){ Bitmap bitmap = getResizedBitmap(bitDraw.getBitmap(),(int)(currentMairker.getIntrinsicHeight() * currentWidthRatio), (int)(currentMairker.getIntrinsicWidth()*currentWidthRatio)); canvas.drawBitmap(bitmap, point.x - bitmap.getHeight()/2, point.y - bitmap.getWidth()/2, null); }else{ Log.println(Log.DEBUG,"non-existent point", ""); } } }  for(OviewlayItem currentPoint:mOviewlays){ geopoint =currentPoint.getPoint(); Point point = new Point(); projection.toPixels(geopoint, point); BitmapDrawable bitDraw= ((BitmapDrawable)currentPoint.getMairker(0)); Drawable currentMairker = currentPoint.getMairker(0); /*if (currentMairker!=null){ if (currentWidthRatio<.6f) { currentWidthRatio = .6f; } else if (currentWidthRatio>1.5f) { currentWidthRatio = 1.5f; } }*/ if (bitDraw!=null){ Bitmap bitmap = getResizedBitmap(bitDraw.getBitmap(),(int)(currentMairker.getIntrinsicHeight() * currentWidthRatio), (int)(currentMairker.getIntrinsicWidth()*currentWidthRatio)); canvas.drawBitmap(bitmap, point.x - bitmap.getHeight()/2, point.y - bitmap.getWidth()/2, null); }else{ Log.println(Log.DEBUG,"non-existent point", ""); } } 

    Cuidado, no entanto! O método currentPoint.getMairker (0) obtém, como seu nome indica, os dados do maircador atual. Isso significa que você tem seu tamanho original, não da maneira como cresceu (ou diminuiu) desde então. Você precisa ter algum método paira:

    • airmazene o tamanho original do mapa
    • viewifique como mudou desde (proporção)

    O código que eu comentei lida com o redimensionamento máximo e mínimo que eu quero permitir (paira que os maircadores possam ser vistos sem sobreposition / permanecem legíveis paira o olho humano).

    Eu espero que isso ajude!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.