0

这是我的代码(如下),

如何删除地理点表单代码,并从服务器的sqlite中读取它?我有超过 1000 个地理点,所以我的代码太长了。

我已经创建了数据库,但不知道如何从服务器连接它。

public class SimpleMap extends MapActivity {

    private MapView mapView;

    List<Overlay> mapOverlays;
    Drawable drawable;
    Drawable drawable2;
    MyLocationOverlay myLocationOverlay;
    SimpleItemizedOverlay itemizedOverlay2;
    SimpleItemizedOverlay itemizedOverlay;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        GeoPoint hr = new GeoPoint((int) (44.715513 * 1E6),
                (int) (16.545410 * 1E6));
        mapView.getController().animateTo(hr);
        mapView.getController().setZoom(7);

        mapOverlays = mapView.getOverlays();

        myLocationOverlay = new FixedMyLocationOverlay(this, mapView);
        mapView.getOverlays().add(myLocationOverlay);
        mapView.postInvalidate();

        drawable = getResources().getDrawable(R.drawable.icon2);
        itemizedOverlay2 = new SimpleItemizedOverlay(drawable, mapView);
        itemizedOverlay2.setShowClose(true);
        itemizedOverlay2.setShowDisclosure(false);
        itemizedOverlay2.setSnapToCenter(false);

        GeoPoint point1000 = new GeoPoint((int) (34.109798 * 1E6),
                (int) (25.242270 * 1E6));
        OverlayItem overlayItem1000 = new OverlayItem(point1000,
                "point1000", "some text");
        itemizedOverlay2.addOverlay(overlayItem1000);

        mapOverlays.add(itemizedOverlay2);
4

1 回答 1

1

出于多种原因,例如性能、安全性和应用程序可扩展性,从移动设备连接到远程数据库不是一个好主意。快速搜索 SO 会发现许多得出相同结论的结果。

如果您可以控制服务器,最好设置一个简单的 Web 服务,您的应用程序可以使用它来检索地理点。然后,您的应用程序将连接到 URL(例如,使用HttpUrlConnection)并下载位置数据,而不是连接到数据库。服务器将需要以您的应用易于解析的格式发送它们,例如逗号分隔的列表:

-82.8883,25.92834
2.5057,-60.90711
...

对于每一对点,创建一个GeoPoint,将其包装在一个OverlayItem中,然后将其添加到您的Overlay.

于 2012-10-17T17:00:43.080 回答