【问题标题】:Wrong position when zooming map in GoogleMaps (Android)在 Google Maps (Android) 中缩放地图时位置错误
【发布时间】:2021-10-03 03:25:40
【问题描述】:

我正在 Android Studio 中实现地图,但是当我缩放标记时,它会转到错误的位置。

这是地图类,我创建了一个画布,然后转换为位图:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private ActivityMapsBinding binding;
    private Bitmap bm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bm = createImageRounded(getApplicationContext(), 80, 80, "S");
        binding = ActivityMapsBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        ImageView imageView = (ImageView)findViewById(R.id.img);
        LatLng sydney = new LatLng(-33.8688, 151.2093);
        MarkerOptions mrk = new MarkerOptions().title("Sydney");
        mrk.position(sydney);
        mrk.icon(BitmapDescriptorFactory.fromBitmap(bm));
        mrk.anchor(0.5f, 1);

        mMap.addMarker(mrk);
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));

    }

    public static Bitmap createImageRounded(Context context, int width, int height, String name)
    {
        Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        Paint paint = new Paint();
        paint.setColor(Color.rgb(62, 176, 220));
        paint.setStrokeWidth(10);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);

        canvas.drawCircle(30, 30, 10, paint);

        return output;
    }

}

非常感谢您的帮助

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    那是因为您绘制的图像比标记边界更小 - 您正在创建 Bitmap 80x80 尺寸,但在其上绘制更小的圆(10 半径,不居中,尝试 canvas.drawCircle(width/2, height/2, Math.min(width, height)/2, paint);

    你也设置错了anchor(不居中,尝试设置mrk.anchor(0.5f, 0.5f);

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2023-04-03
      • 2016-03-13
      • 1970-01-01
      相关资源
      最近更新 更多