我和Android新手,我很难获得要显示的Google Maps v2标记。如果我放置一个测试标记,其中包含一些硬编码值,它的效果非常好。但是,我的代码似乎不起作用。
我已经调试并看到值正确并进入函数,但我无法让它工作。
我也正在调试物理设备。
这是代码
private void inflateGoogleMap(ArrayList<Geocache> cacheList){
GoogleMap map = ((MapFragment) getFragmentManager()
.findFragmentById(R.id.map)).getMap();
LatLng sydney = new LatLng(-33.867, 151.206);
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));
for(int i=0; i<cacheList.size(); i++){
Log.d("CACHE_NAME", cacheList.get(i).getName());
Log.d("CACHE_LAT", Double.toString(cacheList.get(i).getLatitude()));
Log.d("CACHE_LONG", Double.toString(cacheList.get(i).getLongitude()));
Double cacheLat = cacheList.get(i).getLatitude();
Double cacheLong = cacheList.get(i).getLongitude();
LatLng pos = new LatLng(cacheLat, cacheLong);
map.addMarker(new MarkerOptions().position(pos));
//Log.d("CACHE_TYPE", json.getString("type"));
//Log.d("CACHE_REGION", json.getString("region"));
/*Marker marker = map.addMarker(new MarkerOptions()
.title(cacheList.get(i).getName())
.snippet(cacheList.get(i).getName())
.position(new LatLng(cacheList.get(i).getLatitude(), cacheList.get(i).getLongitude())));*/
}
}
我如何获得Json列表
public void getNearbyGeocaches(double lat, double lon,int limit){
//String url = "http://test.opencaching.com/api/geocache?center=38.642%2c-94.754&limit=5&Authorization="+API_KEY;
String url = "http://test.opencaching.com/api/geocache?center="+lat+"%2c"+lon+"&limit="+limit+"&Authorization="+super.getApiKey();
super.get(url, null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONArray response) {
// Pull out the first event on the public timeline
JSONObject json = null;
ArrayList<Geocache> geoList = new ArrayList<Geocache>();
//Log.d("JSON_LENGTH",Integer.toString(timeline.length()));
for(int i = 0; i<response.length(); i++)
{
try {
//Cast response para JSONObject
json = (JSONObject) response.get(i);
} catch (JSONException e) {
e.printStackTrace();
}
try {
Geocache cache = new Geocache();
//Log.d("CACHE_NAME", json.getString("name"));
//Log.d("CACHE_TYPE", json.getString("type"));
//Log.d("CACHE_REGION", json.getString("region"));
cache.setName(json.getString("name"));
cache.setDescription(json.getString("description"));
JSONObject location = json.getJSONObject("location");
cache.setLatitude(Double.parseDouble(location.getString("lon")));
cache.setLongitude(Double.parseDouble(location.getString("lat")));
//Log.d("CACHE_LAT", location.getString("latitude"));
//Log.d("CACHE_LONG", location.getString("longitude"));
//cache.setName(firstEvent.getString("name"));
geoList.add(cache);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
}
inflateGoogleMap(geoList);
// Do something with the response
}
});
}
感谢您的帮助!
答案 0 :(得分:2)
我注意到我在创建标记时切换了纬度和经度。
当范围从-90º到90º
时,我正在通过latitutde151º值答案 1 :(得分:0)
以这种方式添加标记..
Mmap.addMarker(new MarkerOptions().position(pos).title(ad).snippet(details).icon(BitmapDescriptorFactory.fromResource(markericon)));
其中pos是LatLng(lat,lon)
和
title
是要在代码段中显示的标题
details
是要在代码段上显示的说明
markericon
是要显示的标记图标。