如何在其他标记上显示谷歌地图Android标记?
我的应用程序中有多个标记,有时其中一些标记位于同一位置。我希望其中一些标记始终显示在其他标记的前面。我应该如何进行如何在其他标记上显示谷歌地图Android标记?,android,google-maps,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,我的应用程序中有多个标记,有时其中一些标记位于同一位置。我希望其中一些标记始终显示在其他标记的前面。我应该如何进行 提前谢谢。您应该以某种方式对它们进行排序,适配器中的最后一个将位于顶部。选择希望始终可见的,并将它们添加到地图的最后一个。我认为这是错误的方法。即使将一个标记放在另一个标记的前面,用户仍有可能单击后面的标记 我不想这样做,而是在向地图添加新的标记时,检查新添加的标记位置是否已经有标记,如果是,只将新数据添加到当前的标记,而不添加另一个 这样,相同的标记将表示两个指定的位置 更新:
提前谢谢。您应该以某种方式对它们进行排序,适配器中的最后一个将位于顶部。选择希望始终可见的,并将它们添加到地图的最后一个。我认为这是错误的方法。即使将一个标记放在另一个标记的前面,用户仍有可能单击后面的标记 我不想这样做,而是在向地图添加新的
标记时,检查新添加的标记
位置是否已经有标记
,如果是,只将新数据添加到当前的标记
,而不添加另一个
这样,相同的标记将表示两个指定的位置
更新:
看看这段代码,在其中我检查当前单击的标记是否是我的当前位置。
这样我就知道我是否应该发起一个方向活动。您可以使用相同的技术来确定在特定位置是否已经有标记
map.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker args) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker args) {
// 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
clickMarkerLatLng = args.getPosition();
TextView title = (TextView) v.findViewById(R.id.tvTitle);
title.setText(args.getTitle());
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
public void onInfoWindowClick(Marker marker)
{
if (SGTasksListAppObj.getInstance().currentUserLocation!=null)
{
if (String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) &&
String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLongitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
Toast.makeText(getApplicationContext(), "This your current location, navigation is not needed.", Toast.LENGTH_SHORT).show();
}
else
{
FlurryAgent.onEvent("Start navigation window was clicked from daily map");
tasksRepository = SGTasksListAppObj.getInstance().tasksRepository.getTasksRepository();
for (Task tmptask : tasksRepository)
{
String tempTaskLat = String.valueOf(tmptask.getLatitude());
String tempTaskLng = String.valueOf(tmptask.getLongtitude());
Log.d(TAG, String.valueOf(tmptask.getLatitude())+","+String.valueOf(clickMarkerLatLng.latitude).substring(0, 8));
if (tempTaskLat.contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && tempTaskLng.contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
task = tmptask;
break;
}
}
/*
findDirections(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude(),
SGTasksListAppObj.getInstance().currentUserLocation.getLongitude(),
clickMarkerLatLng.latitude, clickMarkerLatLng.longitude, GMapV2Direction.MODE_DRIVING );
*/
Intent intent = new Intent(getApplicationContext() ,RoadDirectionsActivity.class);
intent.putExtra(TasksListActivity.KEY_ID, task.getId());
startActivity(intent);
}
}
else
{
Toast.makeText(getApplicationContext(), "Your current location could not be found,\nNavigation is not possible.", Toast.LENGTH_SHORT).show();
}
}
});
// Returning the view containing InfoWindow contents
return v;
}
});
marker.setZIndex(Float.MAX_VALUE)您可能是对的,我将这样做。谢谢你的建议。还有一个问题,你知道有没有什么快速的方法来检查给定的位置是否有标记,或者我需要自己制作功能?