我想根据示例添加onInfoWindowClick方法:
https://developers.google.com/maps/documentation/android/utility/marker-clustering
课堂上的:
方法应该是这样的:
@Override
public void onInfoWindowClick(Person person) {
// Does nothing, but you could go into the user's profile page, for example.
if (person.name.equals("JOHN"))
{
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=NEW+YORK")); startActivity(i);
有什么建议有什么不对吗? }
答案 0 :(得分:1)
正如您使用CustomMarkerClusteringDemoActivity引用的那样,您需要
1。)实现自己的模型渲染器(PersonRenderer)
你的PersonRenderer类中的2。)也实现了onClusterItemRendered方法。
@Override
protected void onClusterItemRendered(Person person, Marker marker) {
super.onClusterItemRendered(person, marker);
markerCamLocMap.put(marker, person);
}
3。)正如您已经注意到的那样,我还将“标记与人”对保存到HashMap中,因为标记是标记为final的类(截至今天),我们无法将其扩展为把更多“东西”放入其中(与数据模型相关联)....
4。)稍后在您常用的onInfoWindowClick方法中,该方法具有如下所示的签名
public void onInfoWindowClick(Marker marker) {
Person person= markerCamLocMap.get(marker);
if (person!= null && person.name.equals("JOHN") ) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=NEW+YORK")); startActivity(i);
}
}
您现在可以抓住与标记/信息窗相关联的“人”,并相应地做一些事情。
你可以调整HashMap以使用标记的ID作为键(marker.getId()),而不是使用标记本身作为键,但你明白了。
答案 1 :(得分:0)
以下是如何实现这一目标的一般解决方案。
Marker profileMarker = mMap.addMarker(new MarkerOptions().position(
new LatLng(lat, lng)).title("Profile Name").snippet("Snippet details"));
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker arg0) {
Intent intent = new Intent(YourCurrentActivity.this, YourProfileActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(Constants.INTENT_EXTRA_PROFILE_ID, profile_id);
startActivity(intent);
}
});