10

Tôi đang phát triển trong bản đồ google APIv2. Vấn đề mà tôi đang phải đối mặt bây giờ là tôi chỉ có thể thêm vào một dòng từ trong cửa sổ thông tin/đoạn mã. Nhưng đầu ra mà tôi muốn có thể hiển thị ở dạng đường ngắt như ví dụ dưới đây. Vì vậy, có bất kỳ phương pháp có thể để giải quyết nó?Nhiều dòng hoặc ngắt dòng bằng .snippet (google maps apiv2)

Ví dụ:

Phối hợp: 03,05085, 101,70506

Speed ​​Limit: 80 km/h

public class MainActivity extends FragmentActivity { 
    static final LatLng SgBesi = new LatLng(03.05085, 101.76022); 
    static final LatLng JB = new LatLng(1.48322, 103.69065); 
    private GoogleMap map; 


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

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 

    map.addMarker(new MarkerOptions().position(SgBesi) 
     .title("KM D7.7 Sungai Besi")    //name 
     .snippet("Coordinate: 03.05085, 101.70506")); //description 

    map.addMarker(new MarkerOptions().position(JB) 
     .title("test") 
     .snippet("Hey, how are you?")); 

     // .icon(BitmapDescriptorFactory //set icon 
     //  .fromResource(R.drawable.ic_launcher))); 

    // move the camera instantly with a zoom of 15. 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(SgBesi, 15)); 

    // zoom in, animating the camera.  
    map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 
    } 
} 
+0

sau khi tôi đã trải qua một số ví dụ tương tự như mã được cung cấp ở trên, tôi vẫn không thể giải quyết được sự cố của mình. Tôi không giỏi trong lập trình và không thực sự hiểu về cách tôi nên chỉ định một vị trí cụ thể với infowindow tùy chỉnh. Hầu hết các ví dụ mà tôi đã thử nghiệm họ đã không chỉ định một vị trí cụ thể. Bất cứ ai có thể gửi một mã hóa hoàn chỉnh cho tôi để tham khảo? Tôi sẽ thực sự đánh giá cao nếu có ai có thể giúp tôi giải quyết một phần vấn đề dự án năm cuối của tôi mà tôi đã được kiểm tra trong 3 ngày. Cảm ơn nhiều. –

Trả lời

0

Bạn sẽ phải sử dụng InfoWindowAdapter để tạo cửa sổ thông tin tùy chỉnh. Việc triển khai mặc định bằng cách nào đó xóa các dòng mới khỏi đoạn mã, có thể được coi là lỗi nhỏ.

19

Bạn cần sử dụng custom InfoWindowAdapter để thay đổi bố cục của InfoWindow thành thiết kế tùy chỉnh được xác định bằng cách sử dụng tệp bố cục. Về cơ bản bạn cần phải:

  1. Khai báo hàm của bạn sử dụng GoogleMap.setInfoWindowAdapter(Yourcustominfowindowadpater)
  2. có một lớp như dưới đây:

...

class Yourcustominfowindowadpater implements InfoWindowAdapter { 
    private final View mymarkerview; 

    Yourcustominfowindowadpater() { 
     mymarkerview = getLayoutInflater() 
      .inflate(R.layout.custominfowindow, null); 
    } 

    public View getInfoWindow(Marker marker) {  
     render(marker, mymarkerview); 
     return mymarkerview; 
    } 

    public View getInfoContents(Marker marker) { 
     return null; 
    } 

    private void render(Marker marker, View view) { 
     // Add the code to set the required values 
     // for each element in your custominfowindow layout file 
    } 
} 
+0

ok, tôi sẽ tìm ra, nhờ hướng dẫn :) –

+0

Các nút trong cửa sổ thông tin này có hoạt động nếu tôi thêm người nghe không? – PSIXO

+1

@PSIXO: Không, các nút sẽ không hoạt động. Từ [tài liệu] (https://developers.google.com/maps/documentation/android/infowindows#custom_info_windows): "Cửa sổ thông tin ... không phải là chế độ xem trực tiếp .... sẽ không tôn trọng ... chạm hoặc các sự kiện cử chỉ. Tuy nhiên, bạn có thể nghe một sự kiện nhấp chuột chung trên toàn bộ cửa sổ thông tin ... ". Vì vậy, bạn có thể sử dụng 'toàn bộ sự kiện cửa sổ thông tin' để lắng nghe các nhấp chuột sẽ có trên nút, nhưng nút chính nó sẽ chỉ là một số điểm ảnh trên một hình ảnh (vì vậy không có nút bấm hoạt hình hoặc). – Phasmal

0

Tôi muốn thêm một cái gì đó để @tony , Theo documentation, bạn không thể thêm hành động vào chế độ xem tùy chỉnh khi nó vẽ dưới dạng hình ảnh trong thời gian chạy.

Lưu ý: Cửa sổ thông tin được vẽ không phải là chế độ xem trực tiếp. Chế độ xem là được hiển thị dưới dạng hình ảnh (sử dụng View.draw (Canvas)) tại thời điểm được trả lại. Điều này có nghĩa là mọi thay đổi tiếp theo cho chế độ xem sẽ không được phản ánh bởi cửa sổ thông tin trên bản đồ. Để cập nhật cửa sổ thông tin sau (ví dụ: sau khi hình ảnh đã được tải), hãy gọi showInfoWindow(). Hơn nữa, cửa sổ thông tin sẽ không tôn trọng bất kỳ tương tác nào điển hình cho chế độ xem bình thường như các sự kiện chạm hoặc cử chỉ. Tuy nhiên, bạn có thể nghe sự kiện nhấp chuột chung trên toàn bộ cửa sổ thông tin là được mô tả trong phần bên dưới.