OnInfowWindowsListenerClick 和 IF 其他
OnInfowWindowsListenerClick and IF Else
我尝试为 GoogleMap OnInfoWindowClickListener 创建一个 if 语句。
但每次我来到其他地方。
并提示?
Marker s780 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.16033, 7.87964))
.title("780")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_780)));
Marker s149 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.60861, 7.99206))
.title("149")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_149)));
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();
在您的代码中:if (marker.equals("s780"))
,marker
是 Marker
类型,而 "s780"
是 String
类型。当然equals
returns假的。您应该将其更改为:
final Marker s780 = ...
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker == s780) {
...
}
}
}
您应该使用标记的 getId() 函数 class。
例如里面的:
public void onInfoWindowClick(Marker marker) {
StringBuilder builder = new StringBuilder(marker.getId());
String str = builder.deleteCharAt(0).toString() ;
int id = Integer.parseInt(str) ;
if (id == 0)
Toast.makeText(getActivity(), "Marker 780 was pressed", Toast.LENGTH_LONG).show();
}
然后你可以用int做一个简单的比较,这样就容易多了。
标记的 ID 按添加到地图的时间顺序排列,从 0 开始。因此您的标记 s780 的 ID 为 0,标记 s149 的 ID 为 1。
希望对您有所帮助
您刚刚错过了一个 else
,所以即使第一个 if (s780)
是 true
,您也会用
制作一个 Toast
Marker 727
然后再次检查 if (s149)
,但最终进入 else
并与
敬酒
Argument:s780
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
else //You missed this else
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();
我找到了适合我的方法:
if (marker.getTitle().equals("555 Test"))
{ Toast.makeText(getActivity(), "Marker 5", Toast.LENGTH_SHORT).show();}
谢谢你的支持。
我尝试为 GoogleMap OnInfoWindowClickListener 创建一个 if 语句。 但每次我来到其他地方。 并提示?
Marker s780 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.16033, 7.87964))
.title("780")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_780)));
Marker s149 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(52.60861, 7.99206))
.title("149")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_149)));
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();
在您的代码中:if (marker.equals("s780"))
,marker
是 Marker
类型,而 "s780"
是 String
类型。当然equals
returns假的。您应该将其更改为:
final Marker s780 = ...
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker == s780) {
...
}
}
}
您应该使用标记的 getId() 函数 class。
例如里面的:
public void onInfoWindowClick(Marker marker) {
StringBuilder builder = new StringBuilder(marker.getId());
String str = builder.deleteCharAt(0).toString() ;
int id = Integer.parseInt(str) ;
if (id == 0)
Toast.makeText(getActivity(), "Marker 780 was pressed", Toast.LENGTH_LONG).show();
}
然后你可以用int做一个简单的比较,这样就容易多了。 标记的 ID 按添加到地图的时间顺序排列,从 0 开始。因此您的标记 s780 的 ID 为 0,标记 s149 的 ID 为 1。
希望对您有所帮助
您刚刚错过了一个 else
,所以即使第一个 if (s780)
是 true
,您也会用
Toast
Marker 727
然后再次检查 if (s149)
,但最终进入 else
并与
Argument:s780
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if (marker.equals("s780"))
Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show();
else //You missed this else
if (marker.equals("s149"))
Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();
我找到了适合我的方法:
if (marker.getTitle().equals("555 Test"))
{ Toast.makeText(getActivity(), "Marker 5", Toast.LENGTH_SHORT).show();}
谢谢你的支持。