我可以从 Google 地图上的不同标记启动另一项活动吗?
Can I launch other activites from different markers on Google Maps?
我有一个主 activity,上面有一些标记(太多了,无法一一初始化)
当我点击 infowidow 时,我想打开一个带有特定标记的片段。
目前我有这样的东西
for( i = 0; i<j; i++)
{
hely = helyek.get(i);
if(hely.getStars()>=2){
hely.getHelyId();
Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(hely.getLat(),hely.getLng()))
.title(hely.getHelynev())
.snippet(hely.getHelycim())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
markers.add(marker);
这会将标记添加到地图。
public void onMapReady(GoogleMap googleMap) {
int j;
int i=0;
List<Marker> markers = new ArrayList<Marker>();
mMap = googleMap;
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class);
intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev());
intent.putExtra(ListActivity.HELY_CIM_EXTRA, hely.getHelycim());
intent.putExtra(ListActivity.HELY_JOVALASZOK, hely.getJovalaszok());
intent.putExtra(ListActivity.HELY_OSSZKERDES, hely.getOsszkerdes());
intent.putExtra(ListActivity.HELY_ID_EXTRA, hely.getHelyId());
intent.putExtra(ListActivity.HELY_LAT,hely.getLat());
intent.putExtra(ListActivity.HELY_LONG, hely.getLng());
startActivity(intent);
}
});
mMap.setMyLocationEnabled(true);
}
这会打开 activity 门课程,但每次都是一样的。我如何定义我点击了哪个标记?
您可以尝试声明一个新的 HashMap 数据结构。当您将标记添加到地图时,您可以像这样将 Hely 对象放入地图:
HashMap<String, Hely> helyMap = new HashMap<>();
//... code to create the marker ...//
markers.add(marker);
helyMap.put(marker.getId(), hely);
然后,在 onInfoWindowClick(Marker marker)
方法中,根据被点击的标记检索 Hely 对象,如下所示:
Hely hely = helyMap.get(marker.getId());
Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class);
intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev());
// ... other intent code ... //
startActivity(intent);
我有一个主 activity,上面有一些标记(太多了,无法一一初始化) 当我点击 infowidow 时,我想打开一个带有特定标记的片段。 目前我有这样的东西
for( i = 0; i<j; i++)
{
hely = helyek.get(i);
if(hely.getStars()>=2){
hely.getHelyId();
Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(hely.getLat(),hely.getLng()))
.title(hely.getHelynev())
.snippet(hely.getHelycim())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
markers.add(marker);
这会将标记添加到地图。
public void onMapReady(GoogleMap googleMap) {
int j;
int i=0;
List<Marker> markers = new ArrayList<Marker>();
mMap = googleMap;
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class);
intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev());
intent.putExtra(ListActivity.HELY_CIM_EXTRA, hely.getHelycim());
intent.putExtra(ListActivity.HELY_JOVALASZOK, hely.getJovalaszok());
intent.putExtra(ListActivity.HELY_OSSZKERDES, hely.getOsszkerdes());
intent.putExtra(ListActivity.HELY_ID_EXTRA, hely.getHelyId());
intent.putExtra(ListActivity.HELY_LAT,hely.getLat());
intent.putExtra(ListActivity.HELY_LONG, hely.getLng());
startActivity(intent);
}
});
mMap.setMyLocationEnabled(true);
}
这会打开 activity 门课程,但每次都是一样的。我如何定义我点击了哪个标记?
您可以尝试声明一个新的 HashMap 数据结构。当您将标记添加到地图时,您可以像这样将 Hely 对象放入地图:
HashMap<String, Hely> helyMap = new HashMap<>();
//... code to create the marker ...//
markers.add(marker);
helyMap.put(marker.getId(), hely);
然后,在 onInfoWindowClick(Marker marker)
方法中,根据被点击的标记检索 Hely 对象,如下所示:
Hely hely = helyMap.get(marker.getId());
Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class);
intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev());
// ... other intent code ... //
startActivity(intent);