Google Android 上的地图工具栏未显示
Google Map toolbar on Android does not showing
我正在使用 google 地图 API,并且我已经为标记创建了自定义信息窗口。
我需要显示工具栏地图,但是使用这个方法
map.getUiSettings().setMapToolbarEnabled(true);
当我单击标记时,会显示我的信息窗口而不是工具栏。
我想在单击标记时显示工具栏。
下面是我的代码:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setMapToolbarEnabled(true);
mMap.setOnMarkerClickListener(this);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
MarkerCouple idtype = (MarkerCouple) marker.getTag();
if (idtype.getType() == ResourceType.EVENTS
&& currentEvents.get(idtype.getID()) != null) {
Resources resources = currentResources
.get(currentEvents.get(idtype.getID()).getRes_ID());
Events event = currentEvents.get(idtype.getID());
Intent i = new Intent(MainActivity.this, ShowEventActivity.class);
i.putExtra(Variable.USER_JSON, user.toJSON());
i.putExtra(Variable.EVENT_JSON, event.toJSON());
i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());
startActivityForResult(i, Variable.SHOW_EVENT);
}
if (idtype.getType() == ResourceType.PLACES
&& currentPlaces.get(idtype.getID()) != null) {
Resources resources = currentResources
.get(currentPlaces.get(idtype.getID()).getRes_ID());
Places place = currentPlaces.get(idtype.getID());
Intent i = new Intent(MainActivity.this, ShowPlaceActivity.class);
i.putExtra(Variable.USER_JSON, user.toJSON());
i.putExtra(Variable.PLACE_JSON, place.toJSON());
i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());
startActivityForResult(i, Variable.SHOW_PLACE);
}
}
});
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.marker_preview, null);
ImageView m = (ImageView) v.findViewById(R.id.marker_image);
m.setImageBitmap(Bitmap.createScaledBitmap(imageToShow, 600, 400, true));
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
});
new MarkerAsync().execute();
}
@Override
public boolean onMarkerClick(final Marker marker) {
MarkerCouple idtype = (MarkerCouple) marker.getTag();
if (idtype.getType() == ResourceType.EVENTS && currentEvents.get(idtype.getID()) != null) {
Events event = currentEvents.get(idtype.getID());
final Resources resources = currentResources.get(event.getRes_ID());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
marker.showInfoWindow();
}
}.execute();
}
if (idtype.getType() == ResourceType.PLACES && currentPlaces.get(idtype.getID()) != null) {
Places place = currentPlaces.get(idtype.getID());
final Resources resources = currentResources.get(place.getRes_ID());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
marker.showInfoWindow();
}
}.execute();
}
return true;
}
只有 return false;
来自你的 onMarkerClick()
public abstract boolean onMarkerClick (Marker marker)
Returns
true if the listener has consumed the event (i.e., the default behavior should not occur), false otherwise (i.e., the default behavior should occur). The default behavior is for the camera to move to the marker and an info window to appear.
我正在使用 google 地图 API,并且我已经为标记创建了自定义信息窗口。
我需要显示工具栏地图,但是使用这个方法
map.getUiSettings().setMapToolbarEnabled(true);
当我单击标记时,会显示我的信息窗口而不是工具栏。
我想在单击标记时显示工具栏。
下面是我的代码:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setMapToolbarEnabled(true);
mMap.setOnMarkerClickListener(this);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
MarkerCouple idtype = (MarkerCouple) marker.getTag();
if (idtype.getType() == ResourceType.EVENTS
&& currentEvents.get(idtype.getID()) != null) {
Resources resources = currentResources
.get(currentEvents.get(idtype.getID()).getRes_ID());
Events event = currentEvents.get(idtype.getID());
Intent i = new Intent(MainActivity.this, ShowEventActivity.class);
i.putExtra(Variable.USER_JSON, user.toJSON());
i.putExtra(Variable.EVENT_JSON, event.toJSON());
i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());
startActivityForResult(i, Variable.SHOW_EVENT);
}
if (idtype.getType() == ResourceType.PLACES
&& currentPlaces.get(idtype.getID()) != null) {
Resources resources = currentResources
.get(currentPlaces.get(idtype.getID()).getRes_ID());
Places place = currentPlaces.get(idtype.getID());
Intent i = new Intent(MainActivity.this, ShowPlaceActivity.class);
i.putExtra(Variable.USER_JSON, user.toJSON());
i.putExtra(Variable.PLACE_JSON, place.toJSON());
i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());
startActivityForResult(i, Variable.SHOW_PLACE);
}
}
});
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.marker_preview, null);
ImageView m = (ImageView) v.findViewById(R.id.marker_image);
m.setImageBitmap(Bitmap.createScaledBitmap(imageToShow, 600, 400, true));
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
});
new MarkerAsync().execute();
}
@Override
public boolean onMarkerClick(final Marker marker) {
MarkerCouple idtype = (MarkerCouple) marker.getTag();
if (idtype.getType() == ResourceType.EVENTS && currentEvents.get(idtype.getID()) != null) {
Events event = currentEvents.get(idtype.getID());
final Resources resources = currentResources.get(event.getRes_ID());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
marker.showInfoWindow();
}
}.execute();
}
if (idtype.getType() == ResourceType.PLACES && currentPlaces.get(idtype.getID()) != null) {
Places place = currentPlaces.get(idtype.getID());
final Resources resources = currentResources.get(place.getRes_ID());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
marker.showInfoWindow();
}
}.execute();
}
return true;
}
只有 return false;
来自你的 onMarkerClick()
public abstract boolean onMarkerClick (Marker marker)
Returns
true if the listener has consumed the event (i.e., the default behavior should not occur), false otherwise (i.e., the default behavior should occur). The default behavior is for the camera to move to the marker and an info window to appear.