2010-08-19 26 views
6

Tôi có nhiều điểm đánh dấu trên bản đồ của mình. Phóng to từng điểm đánh dấu cho tôi biết vị trí. nhưng thu nhỏ các điểm đánh dấu chồng lên nhau và khó xác định vị trí của điểm đánh dấu hơn.Đánh dấu bản đồ tỷ lệ bằng cách thu phóng, Android

Có cách nào để chia tỷ lệ hình ảnh điểm đánh dấu tùy thuộc vào hệ số thu phóng không?

Trả lời

5

Phụ thuộc vào cách bạn vẽ điểm đánh dấu của mình. Nếu điểm đánh dấu của bạn chỉ là bitmap/drawable, chỉ cần sử dụng matrix.postScale()

Matrix matrix = new Matrix(); 
matrix.postScale(2f, 2f); // douple the size 
canvas.drawBitmap(mBitmap, matrix, mPaint); 
+0

Bạn có thể cung cấp phương pháp chi tiết hơn về cách thực hiện việc này không? – ferguior

+0

@ferguior: Chính xác bạn cần gì? Vẽ một hình ảnh được chia tỷ lệ bây giờ đã được trả lời trong bài viết đã chỉnh sửa của tôi ... – WarrenFaith

+1

Nghi ngờ của tôi là nhiều hơn về cách xử lý việc chia tỷ lệ, khi nào cần thực hiện và cách đo nó để tôi có thể áp dụng đúng quy mô. Ngoài ra, mã này bạn đăng, trong đó lớp nó sẽ đi đâu? Trong Chế độ xem bản đồ hoặc trong Lớp phủ, hoặc trong ItemizedItem? – ferguior

2

Điểm đánh dấu không thay đổi kích thước dựa trên thu phóng. Sử dụng GroundOverlays nếu bạn muốn có hiệu ứng này. src

GoogleMap map = ...; // get a map. 
BitmapDescriptor image = ...; // get an image. 
LatLngBounds bounds = ...; // get a bounds 
// Adds a ground overlay with 50% transparency. 
GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions() 
    .image(image) 
    .positionFromBounds(bounds) 
    .transparency(0.5)); 

Lớp phủ mặt đất là hình ảnh được cố định với bản đồ và tỷ lệ với bản đồ thu phóng. Vui lòng xem API để biết thêm thông tin

+0

Nhưng sau đó bạn phải tính các giới hạn của Lớp phủ mặt đất hơn là cung cấp một vị trí. Điều này làm cho nó trở thành một giải pháp ít lý tưởng. –

0

Một biểu mẫu đơn giản là.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.raw.ic_car_1); 
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); 
     googleMap.addGroundOverlay(new GroundOverlayOptions() 
      .image(bitmapDescriptor) 
      .position(latLng,100)); 
Các vấn đề liên quan