-2

データベースMySQLから緯度と経度を使用してアプリケーションでマップを作成しようとしています。

これは、マップに表示したいをクリックしたときのスクリーンショットのリストビューです。

ここに私の活動があります:

public class Map_TokoBengkel extends MapActivity {
    private MapView mapView;
    private LocationManager locManager;
    private LocationListener locListener;
    Entity_BikeShopRepair entity;
    private ArrayList<Entity_BikeShopRepair> list_lokasi = new ArrayList<Entity_BikeShopRepair>();

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_shoprepair);

        final ActionBar actionBar = (ActionBar) findViewById(R.id.actionbar);
        actionBar.setTitle(getString(R.string.app_name));

        actionBar.setHomeAction(new IntentAction(this, new Intent(this,
                Home_Activity.class), R.drawable.home));

        initLokasi();
        initMap();
        initLocationManager();
    }

    /**
     * Initialize the map to the Data Location.
     */
    private void initLokasi() {
        list_lokasi.add(entity.getLat(), entity.getLng(), 1, entity.getShop_Name());
    }

    /**
     * Initialize the map to the LinearLayout.
     */
    private void initMap() {
        mapView = (MapView) findViewById(R.id.map_view);
        mapView.displayZoomControls(true);
        mapView.setBuiltInZoomControls(true);
        mapView.getController().setZoom(15);
    }

    /**
     * Initialize the location manager.
     */
    private void initLocationManager() {
        locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locListener = new LocationListener() {
            // method ini akan dijalankan apabila koordinat GPS berubah
            public void onLocationChanged(Location newLocation) {
                tampilkanPosisikeMap(newLocation);
            }

            public void onProviderDisabled(String arg0) {
            }

            public void onProviderEnabled(String arg0) {
            }

            public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            }
        };
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
                1000, locListener);

    }

    /**
     * This method will be called when current position changed is submitted via
     * the GPS.
     * 
     * @param newLocation
     */
    protected void tampilkanPosisikeMap(Location newLocation) {
        List<Overlay> overlays = mapView.getOverlays();

        // first remove old overlay
        if (overlays.size() > 0) {
            for (Iterator iterator = overlays.iterator(); iterator.hasNext();) {
                iterator.next();
                iterator.remove();
            }
        }

        // transform the location to a geopoint
        GeoPoint geopoint = new GeoPoint(
                (int) (newLocation.getLatitude() * 1E6),
                (int) (newLocation.getLongitude() * 1E6));
        GeoPoint myposition = geopoint;
        Location locationA = new Location("point A");
        Location locationB = new Location("point B");
        locationA.setLatitude(geopoint.getLatitudeE6() / 1E6);
        locationA.setLongitude(geopoint.getLongitudeE6() / 1E6);
        // initialize icon
        Drawable icon = getResources().getDrawable(R.drawable.marker);
        icon.setBounds(0, 0, icon.getIntrinsicWidth(),
                icon.getIntrinsicHeight());

        // create my overlay and show it
        MyItemizedOverlay overlay = new MyItemizedOverlay(icon, this);
        OverlayItem item = new OverlayItem(geopoint, "My Location", "Lat:"
                + locationA.getLatitude() + "\nLng:" + locationA.getLongitude());
        overlay.addItem(item);
        mapView.getOverlays().add(overlay);
        for (int i = 0; i < list_lokasi.size(); i++) {
            geopoint = new GeoPoint((int) (list_lokasi.get(i).lat * 1E6),
                    (int) (list_lokasi.get(i).lng * 1E6));
            locationB.setLatitude(geopoint.getLatitudeE6() / 1E6);
            locationB.setLongitude(geopoint.getLongitudeE6() / 1E6);

            double distance = locationA.distanceTo(locationB);

            if (list_lokasi.get(i).category == 1) {
                icon = getResources().getDrawable(R.drawable.bicycle_shop);
            } else if (list_lokasi.get(i).category == 2) {
                icon = getResources().getDrawable(R.drawable.bicycle_shop);
            } else if (list_lokasi.get(i).category == 3) {
                icon = getResources().getDrawable(R.drawable.bicycle_shop);
            }

            icon.setBounds(0, 0, icon.getIntrinsicWidth(),
                    icon.getIntrinsicHeight());
            overlay = new MyItemizedOverlay(icon, this);
            item = new OverlayItem(geopoint, list_lokasi.get(i).lokname, "Lat:"
                    + list_lokasi.get(i).lat + "\nLng:"
                    + list_lokasi.get(i).lng + "\n Jarak:" + distance + "m");
            overlay.addItem(item);
            mapView.getOverlays().add(overlay);
        }

        // move to location
        mapView.getController().animateTo(myposition);

        // redraw map
        mapView.postInvalidate();
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}

しかし、そのコードには何かエラーがあります

private void initLokasi() {
    list_lokasi.add(entity.getLat(), entity.getLng(), 1, entity.getShop_Name());
} 

エラーメッセージは次のとおりです。

The method add(int, Entity_BikeShopRepair) in the type ArrayList<Entity_BikeShopRepair> is not applicable for the arguments (double, double, int, String)`.

誰かが私の問題を解決するのを手伝ってくれますか?

4

1 に答える 1

1

問題はエラーの中にあります

ArrayList 型のメソッド add(int, Entity_BikeShopRepair) は、引数 (double、double、int、String) には適用されません。

コンパイラは、int と Entity_BikeShopRepair を与えることを期待していると伝えていますが、代わりに 4 つのパラメーターを与えているため、何をすべきかわかりません。

list_lokasi.add(entity.getLat(), entity.getLng(), 1, entity.getShop_Name()); 

あなたがする必要があるようです

list_lokasi.add(1, entity);

または、エンティティが追加されるリスト内の位置を気にしない場合は、

list_lokasi.add(entity);
于 2012-09-30T20:03:07.140 に答える