【问题标题】:how to get intent data from arraylist after marker click on google map标记点击谷歌地图后如何从arraylist获取意图数据
【发布时间】:2014-04-17 08:52:31
【问题描述】:

我正在使用数组列表来使用 for 循环显示不同的组织位置(标记)。

private void addMarkers() {
if (googleMap != null) {

    // getting intent data
    Intent in = getIntent();

    ArrayList<HashMap<String, String>> organizationList = (ArrayList<HashMap<String, String>>)in.getSerializableExtra("organization");

    for(int i = 0; i < organizationList.size(); i++) {
        name = organizationList.get(i).get(TAG_NAME);
        latitude = organizationList.get(i).get(TAG_LATITUDE);
        longitude = organizationList.get(i).get(TAG_LONGITUDE);

        lat = Double.parseDouble(latitude);
        longi = Double.parseDouble(longitude);

        googleMap.addMarker(new MarkerOptions().position(new LatLng(lat,longi)).title(name).visible(true));

    }

这是在点击标记时执行操作的以下代码

@Override
public boolean onMarkerClick(Marker marker) {
Log.i("GoogleMapActivity", "onMarkerClick");
Toast.makeText(getApplicationContext(),marker.getTitle(), Toast.LENGTH_LONG).show();
Intent in = new Intent(getApplicationContext(),SingleContactActivity.class);

in.putExtra(TAG_NAME, name);
in.putExtra(TAG_LATITUDE, latitude);
in.putExtra(TAG_LONGITUDE, longitude);
startActivity(in);
return false;}

我知道 putExtra 给出了 for 循环的最后一个值.....请帮我发送点击另一个类的标记的确切值

【问题讨论】:

  • 你到底想要什么?我不明白。使用更多信息编辑您的问题
  • 在 onMarkerClick 中,再次循环您的 organizationList 并检查标记 Title = 组织名称,那么您拥有正确的组织,您可以将其放入意图中。
  • 谢谢 Francesco verheye

标签: android google-maps android-intent arraylist marker


【解决方案1】:

试试这个。

@Override
    public void onInfoWindowClick(Marker arg0) {
        // TODO Auto-generated method stub

        Toast.makeText(getApplicationContext(),arg0.getTitle(), Toast.LENGTH_LONG).show();
        Intent in = new Intent(getApplicationContext(),SingleContactActivity.class);

        in.putExtra(TAG_NAME, name);
        in.putExtra(TAG_LATITUDE, latitude);
        in.putExtra(TAG_LONGITUDE, longitude);
        startActivity(in);

    }

【讨论】:

    【解决方案2】:

    这是我解决的解决方案

      @Override
    public boolean onMarkerClick(Marker marker) {
    Log.i("GoogleMapActivity", "onMarkerClick");
    
    Intent intent = getIntent();
    
    @SuppressWarnings("unchecked")
    ArrayList<HashMap<String, String>> organizationList = (ArrayList<HashMap<String, String>>)intent.getSerializableExtra("organization");
    
    for(int i = 0; i < organizationList.size(); i++) {
        name = organizationList.get(i).get(TAG_NAME);
    
        if(marker.getTitle().equalsIgnoreCase(name)){
    
            latitude = organizationList.get(i).get(TAG_LATITUDE);
            longitude = organizationList.get(i).get(TAG_LONGITUDE);
    
            Intent in = new Intent(getApplicationContext(),SingleContactActivity.class);
            in.putExtra(TAG_NAME, name);
            in.putExtra(TAG_LATITUDE, latitude);
            in.putExtra(TAG_LONGITUDE, longitude);
            startActivity(in);
    
        }
    
    }
    
    return false;}
    

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2019-06-07
      相关资源
      最近更新 更多