2017-02-27 6 views
0

私はアンドロイド開発で新しくなっています。私は自分のアプリケーションマップにGoogleマーカーを追加しようとしていますが、表示されません。マーカーの緯度& lngが倍数であればマーカーを設定できますが、APIデータを表示すると表示されません。どうもありがとう。Android google mapマーカーが表示されません

@Override 
public void onMapReady(final GoogleMap googleMap) { 
    this.googleMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    getLocation(); 

    // This marker will show at my app screen ! 
    LatLng latLng = new LatLng(24.9992666, 121.5082287); 
    googleMap.addMarker(new MarkerOptions().position(latLng) 
      .title("This is office Marker") 
    ); 
    googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 





    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return; 
    } 
    this.googleMap.setMyLocationEnabled(true); 




    HttpUtil.sendHttpRequest("http://113.10.198.159/appapi/getWIFIList", new HttpCallbackListener() { 
     @Override 
     public void onFinish(String response) { 
      Gson gson = new Gson(); 
      JsonBean jsonBean = gson.fromJson(response, JsonBean.class); 

      Log.d(TAG, "【】【id】【】" + jsonBean.getResult().get(0).getId()); 
      Log.d(TAG, "【】【merchant_id】【】" + jsonBean.getResult().get(0).getMerchant_id()); 
      Log.d(TAG, "【】【merchant_name】【】" + jsonBean.getResult().get(0).getMerchant_name()); 
      Log.d(TAG, "【】【city】【】" + jsonBean.getResult().get(0).getCity()); 
      Log.d(TAG, "【】【area】【】" + jsonBean.getResult().get(0).getArea()); 
      Log.d(TAG, "【】【address】【】" + jsonBean.getResult().get(0).getAddress()); 
      Log.d(TAG, "【】【lat】【】" + jsonBean.getResult().get(0).getLat()); 
      Log.d(TAG, "【】【lng】【】" + jsonBean.getResult().get(0).getLng()); 
      Log.d(TAG, "【】【addTime】【】" + jsonBean.getResult().get(0).getAddTime()); 
      Log.d(TAG, "【】【dlat】【】" + jsonBean.getResult().get(0).getDlat()); 
      Log.d(TAG, "【】【dlng】【】" + jsonBean.getResult().get(0).getDlng()); 
      Log.d(TAG, "【】【wificode】【】" + jsonBean.getResult().get(0).getWificode()); 
      Log.d(TAG, "【】【upstream】【】" + jsonBean.getResult().get(0).getUpstream()); 
      Log.d(TAG, "【】【downstream】【】" + jsonBean.getResult().get(0).getDownstream()); 

      //// This marker can not show at my app screen 
      LatLng latLng = new LatLng(jsonBean.getResult().get(0).getDlat(), jsonBean.getResult().get(0).getDlng()); 
      Marker marker = googleMap.addMarker(new MarkerOptions().position(latLng) 
        .title("This is Test Marker") 
      ); 

     } 

     @Override 
     public void onError(Exception e) { 

     } 
    }); 
} 



public class HttpUtil { 
public static void sendHttpRequest(final String address, final HttpCallbackListener listener) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       OkHttpClient client = new OkHttpClient(); 
       String s1 = "lat"; 
       String s2 = "24.9992666"; 
       String s3 = "lng"; 
       String s4 = "121.5082287"; 
       RequestBody requestBody = new FormBody.Builder() 
         .add(s1, s2) 
         .add(s3, s4) 
         .build(); 
       Request request = new Request.Builder() 
         .url(address) 
         .post(requestBody) //post 
         .build(); 
       Response response = client.newCall(request).execute(); 
       String responseData = response.body().string(); 
       if (listener != null) { 
        // onFinish() method 
        listener.onFinish(responseData); 
       } 
      } catch (Exception e) { 
       if (listener != null) { 
        // onError() method 
        listener.onError(e); 
       } 

      } 
     } 
    }).start(); 
} 

}

+0

コードしてください:それはようなものになるだろう、二重のために

。ありがとうございます。 http://stackoverflow.com/help/mcve –

+0

アイデアを得るためのコードを追加してください。何を試していますか? –

+0

@SouravGangulyここに私のコードは、これは私が新しい男だ、私はStackoverflowを使用している場合は、ごめん、最初の質問です。 – JackenLiu

答えて

0

アップshoiwingマップですか?あなたの内部にあるもの getLocation();あなたはそれがあることを期待していなかったところ 機能は、以下のようなものが存在しない場合、それを追加し

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
mapFragment.getMapAsync(this); 

また、ズームイン、ズームアウトすると周辺の地図をパンすることを忘れないで、マーカーがプロットされていてもよいです。 まだ動作しない場合は、このチュートリアルに従ってください。動作する必要があります。 google maps with marker

+0

地図も表示されますマップ画面で最初のマーカーを見ることはできますが、2番目のマーカーは表示できません。それは本当に私を殺している。 – JackenLiu

+0

あなたはmainActivity.javaコード全体を投稿できますか?http://113.10.198.159/appapi/getWIFIListから受信した結果は何ですか?試してもほとんど何も得られませんでした。マップ上にプロットしようとしても、動作しない場合は、LOGCATログを注意深くチェックし、このリンクを見てください。https://gist.github.com/saxman/5347195 – burgur

+0

ありがとうございます!しかし、私はすでにそれを修正し、私はハンドラに問題のコードを入れて、それはすでに動作します!とりあえずありがとう。 – JackenLiu

0

あなたはjsonから正しい価値を得ていますか?文字列を返している可能性があります。希望のタイプを取得するには、valueOfに変換してみてください。

double lat = Double.valueOf(jsonBean.getResult().get(0).getDlat()); 
+0

はいデータタイプが真で、私は郵便配達のチェックを使用します。 2番目のMarker's lat&lngはすべて、アプリをデバッグするときに価値がありますが、それでも画面に表示されません。また、Android StudioはHandlerに関するアプリのデバッグプロンプトを表示します。 – JackenLiu

関連する問題