私はアンドロイド分野の初心者です。Network Provider から緯度と経度の値を取得し、それをローカル サーバー (LAMP) に保存するAndroid App1を作成しました。
Network Provider を使用して取得された値 (lat と lon) を持つ 3 つの列 (lat、lon、id) を持つ MYSQL DB テーブルも作成しました。現在、テーブルには 10 個を超える値があります。
Android App2で PHP スクリプトを使用して MYSQL DB からこれらの値を取得するための JSON オブジェクトを作成しました
これらはすべて正常に機能します。ここでやらなければならないことは、マーカーを使用して地図上に緯度と経度の値をプロットする MapActivity を作成することです。地図上にプロットしようとしましたが、地図上に最後の位置 (テーブルからの最後の緯度と経度の値) しか取得できません。
すべてのポイントを地図上にプロットする方法。以下は私が試した私のコードですが、正しく動作していません。私の間違いを正すのを手伝ってください。
public class ShowMapActivity extends MapActivity {
String returnString;
String returnString1;
double aa1 ;
double aa2;
private MapController mapController;
private MapView mapView;
private LocationManager locationManager;
private MyOverlay itemizedoverlay;
private MyLocationOverlay myLocationOverlay;
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.main); // bind the layout to the activity
// Configure the Map
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
//mapView.setSatellite(true);
mapController = mapView.getController();
mapController.setZoom(14); // Zoon 1 is world view
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
mapView.getController().animateTo(myLocationOverlay.getMyLocation());
}
});
Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
itemizedoverlay = new MyOverlay(this, drawable);
createMarker();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
private void createMarker() {
GeoPoint p = mapView.getMapCenter();
OverlayItem overlayitem = new OverlayItem(p, "", "");
itemizedoverlay.addOverlay(overlayitem);
if (itemizedoverlay.size() > 0) {
mapView.getOverlays().add(itemizedoverlay);
}
}
@Override
protected void onResume() {
super.onResume();
myLocationOverlay.enableMyLocation();
myLocationOverlay.enableCompass();
}
@Override
protected void onPause() {
super.onPause();
myLocationOverlay.disableMyLocation();
myLocationOverlay.disableCompass();
}
public class GetMethodEx {
public String getInternetData() throws Exception {
BufferedReader in = null;
String data = "";
//String returnString = null;
// httpGet
try {
HttpClient client = new DefaultHttpClient();
URI website = new URI("http://192.168.1.15/latlonret1.php");
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String l = "";
String nl = System.getProperty("line.separator");
while ((l = in.readLine()) != null) {
sb.append(l + nl);
}
in.close();
data = sb.toString();
// return data;
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// parse json data
try {
JSONArray jArray = new JSONArray(data);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
JSONObject json_data1 = jArray.getJSONObject(i);
returnString =json_data.getString("lat") + "\n";
returnString1 =json_data1.getString("lon") + "\n";
System.out.println(returnString);
System.out.println(returnString1);
}
Bundle bundle = new Bundle();
bundle.putString("stuff", returnString);
bundle.putString("stuff1", returnString1);
try
{
aa1=Double.valueOf(returnString);
aa2=Double.valueOf(returnString1);
}
catch(Exception e)
{
}
System.out.println(returnString);
System.out.println(returnString1);
}
catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return returnString;
}
}
}