2016-07-02 11 views
0

私はマーカー付きGoogleマップ上のMySqlから経度緯度値をプロットしようとしています。経度緯度値を取得するためのコードは、Toast Messageを使用している間コードがこれらの値を表示するのと同じです。問題は、Googleマップ上にマーカーが表示されない限り、すべてがうまくいくということです。ここに私のソースコードです。MySqlからフェッチされた対応する経度緯度値からマップ上のマーカーを取得しない

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 
private String JSON_STRING; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 

    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(map); 
    mapFragment.getMapAsync(this); 


} 


@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    getJSON(); 



    /* LatLng sydney = new LatLng(33, 88); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
*/ 
} 


private void showLongLat(){ 
    JSONObject jsonObject = null; 

    try { 
     jsonObject = new JSONObject(JSON_STRING); 
     JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY); 

     for(int i = 0; i<result.length(); i++){ 
      JSONObject jo = result.getJSONObject(i); 
      String id = jo.getString(Config.TAG_ID); 
      String longitude = jo.getString(Config.TAG_LONG); 
      String latitude = jo.getString(Config.TAG_LAT); 
      Toast.makeText(getApplicationContext(),latitude+longitude,Toast.LENGTH_LONG).show(); 

      LatLng marker = new LatLng(Double.parseDouble(longitude),Double.parseDouble(latitude)); 

      //LatLng sydney = new LatLng(42+i,87-i); 

      mMap.addMarker(new MarkerOptions().position(marker).title("Marker Somewhere")); 
      mMap.moveCamera(CameraUpdateFactory.newLatLng(marker)); 

     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


} 




private void getJSON(){ 
    class GetJSON extends AsyncTask<Void,Void,String>{ 

     ProgressDialog loading; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loading = ProgressDialog.show(MapsActivity.this,"Fetching Data","Wait...",false,false); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      loading.dismiss(); 
      JSON_STRING = s; 
      showLongLat(); 
     } 

     @Override 
     protected String doInBackground(Void... params) { 
      RequestHandler rh = new RequestHandler(); 
      String s = rh.sendGetRequest(Config.URL_GET_ALL); 
      return s; 
     } 
    } 
    GetJSON gj = new GetJSON(); 
    gj.execute(); 
} 


} 
+0

は、あなたの座標はどのような形式で表示してくださいすることができますか?マーカを追加するには大きな精度が重要です –

+0

私の座標は文字列形式であり、私はそれらをDoubleに変換しました。 –

+0

データベースに保存されているサンプル座標を教えてください。 –

答えて

1

緯度と経度の値を変更しています。このライン:

LatLng marker = new LatLng(Double.parseDouble(longitude),Double.parseDouble(latitude)); 

でなければなりません:

LatLng marker = new LatLng(Double.parseDouble(latitude),Double.parseDouble(longitude)); 
+0

おかげさまで...私はここに質問を掲示した後に気づきました;) –

関連する問題