2013-05-10 40 views
9
  • Cách tạo thể hiện của lớp Marker nhưng không thêm nó vào bản đồ.
+0

Nó còn quan trọng hơn đối với ứng dụng tôi đang tạo. –

Trả lời

4

Bạn có thể sử dụng LazyMarker.java từ Android Maps Extensions.

Nó không thể tạo điểm đánh dấu cho đến khi bạn gọi setVisible(true) trên đó.

+0

Nó đã làm việc. Cảm ơn bạn. –

3

Bạn có thể làm điều này bằng cách thiết lập visibility để false

Marker marker = mMap.addMarker(new MarkerOptions() 
          .position(
            new LatLng(arg0.latitude, 
              arg0.longitude)) 
          .draggable(true).visible(false)); 

Sửa

Marker m = new Marker(new z() { 

       @Override 
       public IBinder asBinder() { 
        return null; 
       } 

       @Override 
       public void showInfoWindow() throws RemoteException { 

       } 

       @Override 
       public void setVisible(boolean paramBoolean) 
         throws RemoteException { 

       } 

       @Override 
       public void setTitle(String paramString) 
         throws RemoteException { 

       } 

       @Override 
       public void setSnippet(String paramString) 
         throws RemoteException { 

       } 

       @Override 
       public void setPosition(LatLng paramLatLng) 
         throws RemoteException { 

       } 

       @Override 
       public void setDraggable(boolean paramBoolean) 
         throws RemoteException { 

       } 

       @Override 
       public void remove() throws RemoteException { 

       } 

       @Override 
       public boolean isVisible() throws RemoteException { 
        return false; 
       } 

       @Override 
       public boolean isInfoWindowShown() throws RemoteException { 
        return false; 
       } 

       @Override 
       public boolean isDraggable() throws RemoteException { 
        return false; 
       } 

       @Override 
       public void hideInfoWindow() throws RemoteException { 

       } 

       @Override 
       public int hashCodeRemote() throws RemoteException { 
        return 0; 
       } 

       @Override 
       public String getTitle() throws RemoteException { 
        return null; 
       } 

       @Override 
       public String getSnippet() throws RemoteException { 
        return null; 
       } 

       @Override 
       public LatLng getPosition() throws RemoteException { 
        return null; 
       } 

       @Override 
       public String getId() throws RemoteException { 
        return null; 
       } 

       @Override 
       public boolean g(z paramz) throws RemoteException { 
        return false; 
       } 
      }); 

Và sau đó thêm nó khi bạn muốn như thế này

mMap.addMarker(new MarkerOptions().position((m.getPosition()))); 

Hy vọng nó giúp

+0

Đây là một trong các tùy chọn, nhưng vẫn là điểm đánh dấu được thêm vào thực tế cho bản đồ. Tôi tự hỏi nếu có một cách để tạo ra nó mà không cần thêm nó - như Flex Maps API. –

+1

Tôi nghĩ rằng chỉ có thể thực hiện bằng cách tạo đối tượng 'Marker' mới bằng cách sử dụng' com.google.android.gms.internal.z' như 'Marker m = new Marker (new z()/* với lớp bên trong hoàn toàn ẩn danh * /) ' –

+1

@ AnujMathur_07 Nhà xây dựng điểm đánh dấu không nên có sẵn cho nhà phát triển và không tốt để thử sử dụng nó. Xem [vấn đề gmaps này] (http://code.google.com/p/gmaps-api-issues/issues/detail?id=5281). –

Các vấn đề liên quan