我一直在寻找关于实现OnMarkerClickListener的帮助,但我发现什么都没用。这是我下面的标记,单击它只会更改颜色(浅蓝色)。我希望它能打开一个更大的窗口,这样我可以输入更多的信息。这可能吗?
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(49.378,-0.3904))
.title("Hello World")
.snippet("This is my test app")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
上面的标记在我的地图上工作得很好,但现在我想点击标记,让它打开一个新的活动/页面或一个更大的窗口,这是最容易使用的。由于我是制作应用程序的真正新手,如果有人成功获得了一个工作示例,请您提供一个链接或一些代码。
提前感谢!
编辑:
根据建议的教程,我已经更改了一些主要活动。Java语言
我添加了OnMarkerClickListener,并选择将未实现的方法添加到公共类中
public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {
在private void setUpMap()下面,我向代码中添加了:private Marker myMarker、setonMarkerclick监听器和myMarker=,:
private Marker myMarker;
{
googlemap.setOnMarkerClickListener(this);
myMarker = googlemap.addMarker(new MarkerOptions()
.position(new LatLng(LatLng))
.title("Hello World")
.snippet("My First App")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
}
在底部的未实现方法中,我有:
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
return false;
我需要在公共布尔OnMarkerClick部分更改什么?我没有收到任何错误,但它就是不起作用。我还需要添加或更改什么?
感谢您的帮助!
如果您需要在市场中单击事件,此代码就是解决方案。
private GoogleMap mGoogleMap;
mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker source is clicked
Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
return true;
}
});
祝你好运
此代码处理maker click事件,并加载包含以下信息的新布局(XML):
/**
* adding individual markers, displaying text on on marker click on a
* bubble, action of on marker bubble click
*/
private final void addLocationsToMap() {
int i = 0;
for (Stores store : storeList) {
LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());
MarkerOptions marker = new MarkerOptions()
.position(l)
.title(store.getStoreName())
.snippet("" + i)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
googleMap.addMarker(marker);
++i;
}
googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
try {
popUpWindow.setVisibility(View.VISIBLE);
Stores store = storeList.get(Integer.parseInt(marker
.getSnippet()));
// set details
email.setText(store.getEmail());
phoneNo.setText(store.getPhone());
address.setText(store.getAddress());
// setting test value to phone number
tempString = store.getPhone();
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0,
spanString.length(), 0);
phoneNo.setText(spanString);
// setting test value to email
tempStringemail = store.getEmail();
SpannableString spanString1 = new SpannableString(tempStringemail);
spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
email.setText(spanString1);
storeLat = store.getLatitude();
storelng = store.getLongtitude();
} catch (ArrayIndexOutOfBoundsException e) {
Log.e("ArrayIndexOutOfBoundsException", " Occured");
}
}
});
}
标记单击事件
在android map v2中单击后不要捕捉到标记
引用上面的帖子
您可以使用OnMarkerClickListener来侦听标记上的单击事件。要在地图上设置此侦听器,请调用GoogleMap。setOnMarkerClickListener(OnMarkerClickListener)。当用户单击标记时,将调用onMarkerClick(标记),标记将作为参数传递。此方法返回一个布尔值,指示您是否已使用该事件(即,您希望抑制默认行为)。如果返回false,则除了自定义行为之外,还会出现默认行为。标记单击事件的默认行为是显示其信息窗口(如果可用)并移动相机,使标记位于地图的中心。
https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.
在标记上使用OnMarkerClickListener。
检查代码片段的链接
Google Maps API v2:如何使标记可点击?
示例:在我的手机上工作
Marker source, destination; GoogleMap mMap; mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); source = mMap.addMarker(new MarkerOptions() .position(sc) .title("MyHome") .snippet("Bangalore") .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); destination = mMap.addMarker(new MarkerOptions() .position(lng) .title("MapleBear Head Office") .snippet("Jayanager") .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); mMap.setOnMarkerClickListener(marker -> { if (marker.getTitle().equals("MyHome")) // if marker source is clicked Toast.makeText(MainActivity.this, marker.getTitle(), Toast.LENGTH_SHORT).show();// display toast return true; });
我需要一些帮助来绘制我正在绘制的地图。地图并不特别复杂,因为我是一个初学者,我有一堆带有信息窗口的标记(完成后还会有更多标记),单击标记或选择页面HTML端下拉菜单的相应项时可以打开这些标记。 当信息窗口打开时(在HTML菜单中单击或选择),我想做但自己找不到的是在地图上自动居中标记。我假设有某种函数可以分配给click或infowindow打开事件,但无法确定是哪种函数以及如何实现它。 我的代码
问题:我无法在谷歌地图上显示标记。我希望用户单击要显示的标记,并将地图置于标记的中心。 损坏内容:单击时不显示标记。地图下方的lat/long div也不显示。 工作原理:地图将显示,并正确居中于单击位置。变量更新为。 自我诊断:我认为这个问题源于的范围问题,或者对的更改在AngularJS生命周期中没有被消化。 第三方包:我使用角谷歌地图。 我的代码片段: 超文本标记语言: 控制器: 概述:所需
使用google maps API,我有一个带有一些自定义图标的近距离标记的地图。每个标记是41px×50px,但每个标记的可点击区域是200px×200px。带标记的地图截图及其可点击区域 有什么办法可以缩小可点击区域的大小吗?
当我点击地图上的某个地方,应用程序绘制当前位置和目的地之间的折线(点击)。我希望目标标记是点击自己所有的时间(每几秒钟),所以在用户移动新的折线是绘制(更新最后一个)。
我想使用自定义图标和c标记的地方 重写markerclick函数,并尝试获取该标记的标记,因为我存储在该标记中,在此之前,我使用了.equal方法来测试该标记是否等于该事件标记 我希望当我点击标记应该商店
我有一张地图,上面有很多自定义的大标记。现在,我希望允许用户在地图上创建路径(显示为折线,稍后保存为地理坐标对列表)。 如果用户单击地图,我可以使用地图的setOnMapClickedListener方法收集这些位置。但是如果用户点击一个标记(setOnMarkerClickedListener),我只能检索标记的位置(通常是标记的ancor的位置)。