标记不会显示在Google Maps v2上

时间:2014-01-09 22:20:46

标签: android google-maps

我和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

        }
    }); 


}

感谢您的帮助!

2 个答案:

答案 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是要显示的标记图标。