0

Я пытаюсь показать местоположение пользователя в красивой маленькой коробке, как показано ниже. В настоящее время у меня только «.title()» на моем маркере, так что я не уверен, о том, как создать синее, прозрачное окно со следующей информацией:Пользовательское информационное окно с адресом

http://s32.postimg.org/v6z9yaamd/Untitled.png

у меня уже есть текущая долгота и широта пользователя, и я предполагаю, что вы можете получить адрес пользователей через Google. Если вы знаете, как стилизовать инфунд и/или как показать адрес, любая помощь будет действительно оценена.

ответ

0

Попробуйте

windowlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tv_lat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/tv_lng" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

MainActivity.java

public class MainActivity extends FragmentActivity { 


GoogleMap googleMap; 

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

    // Getting reference to the SupportMapFragment of activity_main.xml 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 

    // Getting GoogleMap object from the fragment 
    googleMap = mapFragment.getMap(); 

    // Setting a custom info window adapter for the google map 
    googleMap.setInfoWindowAdapter(new InfoWindowAdapter() { 

     // Use default InfoWindow frame 
     @Override 
     public View getInfoWindow(Marker arg0) { 
      return null; 
     } 

     // Defines the contents of the InfoWindow 
     @Override 
     public View getInfoContents(Marker arg0) { 

      // Getting view from the layout file info_window_layout 
      View v = getLayoutInflater().inflate(R.layout.windowlayout, null); 

      // Getting the position from the marker 
      LatLng latLng = arg0.getPosition(); 

      // Getting reference to the TextView to set latitude 
      TextView tvLat = (TextView) v.findViewById(R.id.tv_lat); 

      // Getting reference to the TextView to set longitude 
      TextView tvLng = (TextView) v.findViewById(R.id.tv_lng); 

      // Setting the latitude 
      tvLat.setText("Latitude:" + latLng.latitude); 

      // Setting the longitude 
      tvLng.setText("Longitude:"+ latLng.longitude); 

      // Returning the view containing InfoWindow contents 
      return v; 

     } 
    }); 

    // Adding and showing marker while touching the GoogleMap 
    googleMap.setOnMapClickListener(new OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng arg0) { 
      // Clears any existing markers from the GoogleMap 
      googleMap.clear(); 

      // Creating an instance of MarkerOptions to set position 
      MarkerOptions markerOptions = new MarkerOptions(); 

      // Setting position on the MarkerOptions 
      markerOptions.position(arg0); 

      // Animating to the currently touched position 
      googleMap.animateCamera(CameraUpdateFactory.newLatLng(arg0)); 

      // Adding marker on the GoogleMap 
      Marker marker = googleMap.addMarker(markerOptions); 

      // Showing InfoWindow on the GoogleMap 
      marker.showInfoWindow(); 

     } 
    }); 

} 
} 

Таким образом, вы можете создать собственный макет и достижения, как вы хотите сделать ,

0

Здесь вы обновили код для InfoWindow

public class MainActivity extends FragmentActivity implements OnMapReadyCallback { 

    GoogleMap Map; 

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

     // Getting reference to the SupportMapFragment of activity_main.xml 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 

     // Getting GoogleMap object from the fragment 
     mapFragment.getMapAsync(this); 

     // Setting a custom info window adapter for the google map 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    public void onMapReady(final GoogleMap googleMap) { 
     this.Map = googleMap; 
     Map.setInfoWindowAdapter(new InfoWindowAdapter() { 

      // Use default InfoWindow frame 
      @Override 
      public View getInfoWindow(Marker arg0) { 
       return null; 
      } 

      // Defines the contents of the InfoWindow 
      @Override 
      public View getInfoContents(Marker arg0) { 

       // Getting view from the layout file info_window_layout 
       View v = getLayoutInflater().inflate(R.layout.info_window_layout, null); 

       // Getting the position from the marker 
       LatLng latLng = arg0.getPosition(); 

       // Getting reference to the TextView to set latitude 
       TextView tvLat = (TextView) v.findViewById(R.id.tv_lat); 

       // Getting reference to the TextView to set longitude 
       TextView tvLng = (TextView) v.findViewById(R.id.tv_lng); 

       // Setting the latitude 
       tvLat.setText("Latitude:" + latLng.latitude); 

       // Setting the longitude 
       tvLng.setText("Longitude:" + latLng.longitude); 

       // Returning the view containing InfoWindow contents 
       return v; 

      } 

     }); 


     // Adding and showing marker while touching the GoogleMap 
     Map.setOnMapClickListener(new OnMapClickListener() { 

      @Override 
      public void onMapClick(LatLng arg0) { 
       // Clears any existing markers from the GoogleMap 
       Map.clear(); 

       // Creating an instance of MarkerOptions to set position 
       MarkerOptions markerOptions = new MarkerOptions(); 

       // Setting position on the MarkerOptions 
       markerOptions.position(arg0); 

       // Animating to the currently touched position 
       Map.animateCamera(CameraUpdateFactory.newLatLng(arg0)); 

       // Adding marker on the GoogleMap 
       Marker marker = Map.addMarker(markerOptions); 

       // Showing InfoWindow on the GoogleMap 
       marker.showInfoWindow(); 

      } 
     }); 


    } 
}