Android Hashmap和Google地图
我想实现如下内容: 我拥有的 我有带有Android Hashmap和Google地图,android,google-maps,hashmap,Android,Google Maps,Hashmap,我想实现如下内容: 我拥有的 我有带有lat和lng值的JSON数据,我已经把所有这些都放到了Hashmap中,我已经完成了它的工作 我需要什么 如何将这些存储的lat和lng值与更多标记一起放入谷歌地图 我有这个解析JSON数据的代码 ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); JSONPars
lat
和lng
值的JSON数据,我已经把所有这些都放到了Hashmap
中,我已经完成了它的工作
我需要什么
如何将这些存储的lat
和lng
值与更多标记一起放入谷歌地图
我有这个解析JSON数据的代码
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
JSONParser jParser = new JSONParser();
JSONArray json = jParser.getJSONFromUrl(url);
try {
for(int i = 0; i < json.length(); i++){
JSONObject c = json.getJSONObject(i);
String lat = c.getString(TAG_LAT);
String lng = c.getString(TAG_LNG);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_LAT, lat);
map.put(TAG_LNG, lng);
// adding HashList to ArrayList
contactList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
你应该使用谷歌地图API V2。在中,您可以看到如何将标记添加到
谷歌地图mMap
// Uses a custom icon.
mSydney = mMap.addMarker(new MarkerOptions()
.position(SYDNEY)
.title("Sydney")
.snippet("Population: 4,627,300"));
在本例中,
SYDNEY
是一个LatLong
点,标题和片段用于自定义信息窗口。只需浏览Hashmap并将每个标记添加到地图中。您不一定需要将每个标记分配给标记
变量(就像在mSydney
的示例中那样)。问题是在数组上迭代,而不是这样做
for (HashMap<String, String> hashMap : contactList) {
map.addMarker(new MarkerOptions()
.position(new LatLng(hashMap.get(TAG_LAT) , hashMap.get(TAG_LNG)))
.title("Another marker"));
}
是的,我正在使用谷歌地图V2。我可以得到一个对象的贴图、lat和long,但如果我想把多个对象放入贴图-->Iam lost,我不知道如何才能得到所有对象并将其插入addMarker,因为lat和long值的列表仍然相同,贴图上只有一个标记的标题是另一个标记。@Tirolel你的
Json
工作正常吗?您的Hashmap
是否填写了位置,您是否尝试打印它们?您是否使用Hashmap进行其他操作。如果没有,那么测试我添加的代码。我刚刚测试了它的工作代码Ambda:我只是试着从hashmap打印值,它就在那里,我的意思是lat和lng值也添加了一个hashmap版本。
for (HashMap<String, String> hashMap : contactList) {
map.addMarker(new MarkerOptions()
.position(new LatLng(hashMap.get(TAG_LAT) , hashMap.get(TAG_LNG)))
.title("Another marker"));
}
mMap = ((SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
ArrayList<LatLng> contactList = new ArrayList<LatLng>();
contactList.add(new LatLng(48.8742, 2.3470));
contactList.add(new LatLng(0, 0));
for (LatLng latLon : contactList) {
mMap.addMarker(new MarkerOptions().position(latLon).title("Another marker"));
}
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
//Paris
{
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_LAT, "48.8742");
map.put(TAG_LNG, "2.3470");
// adding HashList to ArrayList
contactList.add(map);
}
//London
{
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_LAT, "51.5171");
map.put(TAG_LNG, "0.1062");
// adding HashList to ArrayList
contactList.add(map);
}
for (HashMap<String, String> hashMap : contactList) {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(Double.parseDouble(hashMap.get(TAG_LAT)) ,
Double.parseDouble(hashMap.get(TAG_LNG))))
.title("Another marker"));
}
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
Log.e("onMarkerClick", "test: "+arg0.getTitle());
return false;
}
});