3

我想问一下我在我的应用程序中使用谷歌地图开发的Android应用程序。我已经在我的地图上制作了多个标记(1323数据,所以1323标记)。所以问题是:搜索框搜索标记(谷歌地图)

我想让搜索框在我的地图上找到特定标记。我不知道如何找到。难道可以找到使用标题或标记片断

c = myDbHelper.query("Landslide", null, null, null, null,null, null); 
if(c.moveToFirst()) { 
    do { 
     String loc = c.getString(3); 
     Double lat = c.getDouble(4); 
     Double lng = c.getDouble(5); 
     String date = c.getString(1); 
     //Integer death = c.getInt(6); 

     mMap.addMarker(new MarkerOptions() 
      .position(new LatLng(lat, lng)) 
      .title(loc + "") 
      .snippet("Latitude:" + lat + " " + "Longitude:" + lng + " " + "Date:" + date + "") 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.red1))); 
     } while (c.moveToNext()); 
    } 
} 

在此先感谢谁帮助我, 问候, Hafizul礼

回答

0

我的标记数据存储在设备上的SQLite中。 你可以尝试添加一个搜索框,如EditText上,在你的布局XML:

<EditText android:id="@+id/edit_textt_d" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

然后实现那么的onChange:

yourEditText = (EditText) findViewById(R.id.yourEditTextId); 
    yourEditTextaddTextChangedListener(new TextWatcher() { 
     @Override 
     public void afterTextChanged(Editable s) {} 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      changeMarker(s) 
     } 
}); 

在每一个改变你应该: 删除当前光标你地图, 查询匹配搜索框的值,只有标记:

public void changeMarker(String searchString) { 
    ... 
    myGoogleMap.clear(); 
    c=myDbHelper.getReadableDatabase().rawQuery("SELECT * FROM marker WHERE marker.name LIKE '"+searchString+"%'"); 
    ... 
} 

,然后添加你的背部标记的M如你在你的问题中所做的那样。希望这种帮助...

+0

亲爱的拉里,我很迷惑在哪里换换,什么是“youredittext”。谢谢你的回复先生。这里是我的完整代码http://pastebin.com/qG3rJKtm。即时通讯如此混乱。你能指导我先生吗?谢谢;) –

+0

嘿,对于迟到的答案抱歉。您可以将onchange放置在您的'MapsActivity'的'onCreate(){...'和文件R.layout.activity_maps的xml中的中。 –

+0

出现此错误..分配给'c'的值myDbHelper.getReadableDatabase()。rawQuery(“SELECT * FROM marker WHERE marker.name LIKE'”+ searchString +“%'”)永远不会少用... This检查指出变量值在其赋值后从未被使用的情况,即: - 变量永远不会在赋值后被读取或 - 在下一个变量读取之前,该值总是被另一个赋值覆盖OR - 变量初始值设定项是冗余的(用于以上两个原因之一)或者 - 变量从不使用。 –

1

创建标记的全局列表/地图/阵列:

private HashMap<String, Marker> markers = new HashMap<String,Marker>(); 
通过标记

并填写:

//... 
Marker marker = mMap.addMarker(new MarkerOptions() 
      .position(new LatLng(lat, lng)) 
      .title(loc + "") 
      .snippet("Latitude:" + lat + " " + "Longitude:" + lng + " " + "Date:" + date + "") 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.red1))); 
markers.put("Name1", marker); 
//add more and more markers 

现在,您可以轻松地找到并得到任何标记:

Marker marker = markers.get("Name1"); 

作为标记的第一个参数HashMap类,你可以把标记标题/段/坐标/ ...。