当前位置: 首页 > 知识库问答 >
问题:

Android Google Maps V2-OnInfoWindowClick上的几个标记

易琨
2023-03-14

我有代码,使一个标记开始一个活动时,你点击InfoWindow。它绝对好用。但是当我尝试添加另一个标记和另一个@override时,它总是打开所有标记的最后一个类infowindows。因此,本质上,所有的标记infowindows在单击时打开相同的活动,而不是打开我想要打开的单独的类。

下面的代码成功地打开了InfoWindowClicked上的1个活动。我把它叫做example.class,这是为每个需要这个例子的人准备的。

 public class MainActivity extends Activity implements OnInfoWindowClickListener {

 private GoogleMap googlemap;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

if(isGooglePlay()){
setContentView(R.layout.activity_main);
setUpMap();

{    }    }


googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,-0))
.title("Title")
.snippet("Snippet")    
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

@Override
public void onInfoWindowClick(Marker marker) {
 Intent intent = new Intent(MainActivity.this,Example.class);
 startActivity(intent);
          } });
{
    googlemap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
 googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,-0))
.title("Title")
.snippet("Snippet")    
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

@Override
public void onInfoWindowClick(Marker marker) {
 Intent intent = new Intent(MainActivity.this,Example.class);
 startActivity(intent);
          } });
{

      {
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(  0, -0))
.title("Title")
.snippet("Snippet")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {


@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(MainActivity.this,Example2.class);
startActivity(intent);
        }  });
}}


}
private GoogleMap googlemap; 
private Map<Marker, Class> allMarkersMap = new HashMap<Marker, Class>();

以上是类级别^^^

 Marker marker1 = googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,0))
.title("England")
.snippet("London")    
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
allMarkersMap.put(marker1, Contact.class);

}

public void onInfoWindowClick(Marker marker) {
Class cls = allMarkersMap.get(marker);
Intent intent = new Intent(MainActivity.this, cls);
startActivity(intent);

}

上面的^^^^位于我的“protected void onCreate(Bundle savedInstanceState){”下。没有错误,调试时可以看到标记,但不能单击InfoWindow。警告如下:

Class is a raw type. References to generic type Class<T> should be parameterized    

我在类级别上看到这个警告两次,在单词'class'上的公共空onInfoWindowClick中看到一次。我尝试过几种不同的方法,比如“向'class'添加类型参数,但都不起作用。在Marker Marker上,在public void中,我将Marker改为marker1,并在allmarkersmap.get(Marker)下面的行中,将Marker改为marker1),只是为了尝试,但都不起作用。我还能做些什么来尝试并初始化onInfoWindowClick函数吗?

共有1个答案

孙书
2023-03-14

MacieJGórski的帮助中有一个示例,当您在GoogleMapsv2上单击单独的标记infowindows时,可以打开不同的类(活动,如页面):

在GoogleMap类级别中添加以下内容:

private GoogleMap googlemap/mMap (or whatever you call yours); 
private Map<Marker, Class> allMarkersMap = new HashMap<Marker, Class>();

在protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)下面,放入您的标记:

    Marker marker = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(0,-0))
    .title("London")
    .snippet("North London")    
    .icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
    allMarkersMap.put(marker, NorthLondon.class);
    googlemap.setOnInfoWindowClickListener(this);



    Marker marker1 = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(0244534,-1232312))
    .title("USA")
    .snippet("Washington")    
    .icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
    allMarkersMap.put(marker1, Washington.class);
    googlemap.setOnInfoWindowClickListener(this);


    Marker marker2 = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(42343244,-0.334322))
    .title("Italy")
    .snippet("Rome"));
    allMarkersMap.put(marker2, Rome.class);
    googlemap.setOnInfoWindowClickListener(this);

    }

    public void onInfoWindowClick(Marker marker) {
    Class cls = allMarkersMap.get(marker);
    Intent intent = new Intent(MainActivity.this, cls);
    startActivity(intent);

}

这要归功于Maciejgórski

 类似资料:
  • 问题内容: 我发现新手很难将几个或几个JSON-LD标记合并在一起。你能告诉我我在做什么错吗? 当我在Google结构化数据测试工具中输入以下标记时,它仅显示架构类型的结果,同时也显示架构类型的结果。 问题答案: 要指定多个顶级项目,您可以使用三个选项: 数组 缺点:您必须为每个项目重复此操作。 多个要素 缺点:您必须为每个项目重复元素和。 但是通常最好只提供一个顶级项,并将其他项嵌套在适当的属性

  • 我有一个项目数组,我想做这样的东西: 但如果我这样做,我会得到一个JSXTTransformer错误: 相邻的XJS元素必须包装在一个封闭标签中 工作版本: 我试过这个。但是用

  • 问题内容: 我很好奇Java标准库中有多少个类。也许有人知道一个大概的数字? 问题答案: 通过计数javadoc API的“所有类”框架中的条目: 在Java 14中 在Java 13中 在Java 12中 在Java 11中 在Java 10中 在Java 9中 在Java 8中 在Java 7中 在Java 6中 在Java 5.0中 在Java 1.4.2中 * 在Java 1.3.1中 *

  • 我使用Lucene3.5和SpanishAnalyzer(它本身使用SpanishStemmer和StandardTokenizer)。 当SpanishAnalyzer用单词(例如)“Claramente”和“Claro”索引文档时,它们都将被索引为“CLAR”。 这种行为对我的需要很有用,今天在查询之前,我使用分析器的+获取搜索词的标记,并根据索引的文档进行搜索。我不是在使用QueryPars

  • 问题内容: 有一条折线,其中折线的顶点列表为[[x1,y1),(x2,y2),(x3,y3),…]和一个点(x,y)。在Shapely中,返回两个几何之间的最短距离。 但是我还需要找到最接近点(x,y)的线上的点的坐标。在上面的示例中,这是距离1.4142135623730951单位的对象上的点的坐标。计算距离时,该方法应具有坐标。有什么方法可以从此方法返回它吗? 问题答案: 您正在描述的GIS术

  • 问题内容: 我有一个包含项的数组,我想做这样的事情: 但是,如果这样做,我会收到JSXTransformer错误: 相邻的XJS元素必须包装在一个封闭标签中 工作版本: 我尝试了这个。但是,使用封闭标签无法正常工作。 在这里回答: 未捕获的错误:始终违反:findComponentRoot(…,… $ 110):无法找到元素。这可能意味着DOM被意外地突变了 请告诉我如何正确包装一些TD标签! 我