从json解析坐标并在mapview中显示?

时间:2011-09-21 06:37:25

标签: android

通过jsonparsing我再次解析所有字符串值我需要在mapview中显示纬度和经度..我需要将所有坐标存储在一个单独的数组中 有人请帮帮我..  提前谢谢

1 个答案:

答案 0 :(得分:1)

我不确定你的parseString的func是怎样的,我假设你可以获得2和lat的长字符串值。剩下的部分可以按照以下方式完成

        String coordinates[] = {"...","..."};
        double lat = Double.parseDouble(coordinates[0]);
        double lng = Double.parseDouble(coordinates[1]);

         p = new GeoPoint(
            (int) (lat * 1E6), 
            (int) (lon * 1E6));
       //mc is MapView object
        mc.animateTo(p);
        mc.setZoom(15); 

        mapView.invalidate();

要在地图上显示,您需要在res /文件夹中创建一个带位图精确点的叠加层

MarkerOverlay mark = new MarkerOverlay();
 listOfOverlays = mapView.getOverlays();
        listOfOverlays.clear();
         listOfOverlays.add(mark);
        mapView.invalidate();

一类MapOverlay可以这样定义:

  class MarkerOverlay extends com.google.android.maps.Overlay
    {
      //create a constructor here with p.x and p.y as parameters

        @Override
        public boolean draw(Canvas canvas, MapView mapView, 
        boolean shadow, long when) 
        {
            super.draw(canvas, mapView, shadow);                   

            Point screenPts = new Point();
            Bitmap bmp = BitmapFactory.decodeResource(
                    getResources(), R.drawable.pushpin);  

        GeoPoint point = new GeoPoint(
                                (int) (p.x * 1E6), 
                                (int) (p.y * 1E6));

                        mapView.getProjection().toPixels(point, screenPts);
                        canvas.drawBitmap(bmp, screenPts.x-16, screenPts.y-32, null); 
                        canvas.drawText(parts[0],screenPts.x-16 , screenPts.y-40, new Paint());
                    }
                }
            }


            return true;
        }
    }