IntelliJ Amiya IntelliJ Amiya - 4 months ago 16
Android Question

onInfoWindowClick Method not working in android

I have create a app where showing my current location in maps.I want to show places in toast message under onInfoWindowClick method. But toast not working .Thanks in advance for help!

Here is my code :

public class SearchProviderLocation extends Activity implements LocationListener,OnInfoWindowClickListener {

class MyInfoWindowAdapter implements InfoWindowAdapter{

private final View myContentsView;

MyInfoWindowAdapter(){
myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
}

@Override
public View getInfoContents(Marker marker) {

TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));
tvTitle.setText(marker.getTitle());
TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));
tvSnippet.setText(marker.getSnippet());

return myContentsView;
}

@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
return null;
}

}


final int RQS_GooglePlayServices = 1;
TextView tvLocInfo;
GoogleMap map;
private LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
String provider;
double latitude;
protected double longitude;
protected boolean gps_enabled,network_enabled;

private String val,val1;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds

boolean isGPSEnabled ;

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


try {

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();

map.setInfoWindowAdapter(new MyInfoWindowAdapter());

}

catch (Exception e) {
e.printStackTrace();
}
}


@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

map.clear();

Geocoder geo = new Geocoder(this.getApplicationContext(), Locale.getDefault());
try {
List<Address> addresses = geo.getFromLocation(location.getLatitude(), location.getLongitude(), 1);

MarkerOptions mp = new MarkerOptions();

mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
mp.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker));

mp.snippet("Address:"+" "+" "+addresses.get(0).getFeatureName()+" "+addresses.get(0).getAdminArea()+" "+addresses.get(0).getLocality()+" "+addresses.get(0).getPostalCode()+""+addresses.get(0).getCountryCode());
mp.title(addresses.get(0).getLocality()+", "+addresses.get(0).getCountryName());

map.addMarker(mp);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 14));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

@Override
protected void onResume() {
super.onResume();

int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

if (resultCode == ConnectionResult.SUCCESS){
Toast.makeText(getApplicationContext(),
"GooglePlayServicesAvailable",
Toast.LENGTH_LONG).show();
}else{
GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
}
}

public void onMapLongClick(LatLng point) {
tvLocInfo.setText("New marker added@" + point.toString());

Marker newMarker = map.addMarker(new MarkerOptions()
.position(point)
.snippet(point.toString()));
newMarker.setTitle(newMarker.getId());

}
@Override
public void onInfoWindowClick(Marker marker)
{
marker.getTitle();
final String ssid = marker.getTitle();

Toast.makeText(getBaseContext(),"You click @" + ssid,Toast.LENGTH_SHORT).show();

}

@Override
public void onProviderDisabled(String provider) {

}

@Override
public void onProviderEnabled(String provider) {


}

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub

}}

Answer

Try Below Code:

map.setOnInfoWindowClickListener(new OnInfoWindowClickListener()
{
    @Override public void onInfoWindowClick(Marker arg0) {
        final String ssid = arg0.getTitle(); 
        Toast.makeText(SearchProviderLocation.this,"You click @" + ssid,Toast.LENGTH_SHORT).show();
    }
});