我试图在我的应用程序中创建一个来自我的数据库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)`.
有人可以帮我解决问题吗?
答案 0 :(得分:1)
问题出现在错误
中方法add(int,Entity_BikeShopRepair)在类型中 ArrayList不适用于参数 (double,double,int,String)
编译器告诉你,它希望你给它一个int和一个Entity_BikeShopRepair而不是你给它四个参数,所以它不知道该怎么做。
list_lokasi.add(entity.getLat(), entity.getLng(), 1, entity.getShop_Name());
看起来你只需要做
list_lokasi.add(1, entity);
或者,如果您不关心列表中添加实体的位置,
list_lokasi.add(entity);