0

編集!

onPostExecute に到達する前に、緯度経度値を上書きしていることがわかります。onPostExecute に渡す前に、配列を使用して情報を格納することをお勧めします。配列はインデックスごとに 1 つのオブジェクトしか保持できないと思っていました。また、インデックスごとに複数の連絡先アイテム (電話、住所、メールなど) を保存したいので、どうすればよいですか? たとえば、各マーカー ポイントでは、緯度経度の値だけでなく、マーカーに追加する名前も取得したいと考えています。

/編集!

Maps API v2 を使用して複数のマーカーを追加しようとしています。JSON 文字列を介してアドレスを取得します。実行すると、地図上にマーカーとして表示される最後の住所のみが取得されます。以下のループを変更して、各マーカーを表示するにはどうすればよいですか。(追加マーカーは onPostExecute にあります) ありがとう!

public class EndpointsTask extends AsyncTask<Context, Integer, Long> {

    public Long doInBackground(Context... contexts) {

      Contactinfoendpoint.Builder endpointBuilder = new Contactinfoendpoint.Builder(
          AndroidHttp.newCompatibleTransport(),
          new JacksonFactory(),
          new HttpRequestInitializer() {
          public void initialize(HttpRequest httpRequest) { }
          });
  Contactinfoendpoint endpoint = CloudEndpointUtils.updateBuilder(
  endpointBuilder).build();

  try {

    String apples = endpoint.listContactInfo().execute().toString();

    JSONObject jObject = new JSONObject(apples);

    JSONArray jsonArr = jObject.getJSONArray("items");

     for(int i =0 ; i<jsonArr.length() ;i++ ){
         JSONObject jsonObj1 = jsonArr.getJSONObject(i);


                    // Storing each json item in variable
                    String id = jsonObj1.getString(TAG_ID);
                    String nameFirst1 = jsonObj1.getString(TAG_FIRSTNAME);
                    String nameLast1 = jsonObj1.getString(TAG_LASTNAME);
                    String emailAddress1 = jsonObj1.getString(TAG_EMAIL);
                    String streetAddress1 = jsonObj1.getString(TAG_ADDRESS);
                    String phone1 = jsonObj1.getString(TAG_PHONE);

                    //test to see if made it to string
                    Log.d("YOUR_TAG", "First Name: " + nameFirst1 + " Last Name: " + nameLast1);

                       address = coder.getFromLocationName(streetAddress1,5);

                        Address location1 = address.get(0);

                        // SET LAT LNG VALUES FOR MARKER POINT

                     lati = location1.getLatitude();
                         longi = location1.getLongitude();

                         Log.d("Location", "Location:" + lati + " " +  longi);


     }

    } catch (IOException e) {
    e.printStackTrace();
  } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
      return (long) 0;


    }
         // ADD MARKER TO MAP UI
    protected void onPostExecute(Long result) {
        mMap.addMarker(new MarkerOptions()
        .position(new LatLng(lati, longi))
         .title("Hello world"));
    }  

    }
4

1 に答える 1

2

上書きするたびに onPostExecute に到達する前に、最後の位置のみを取得していlatiます。longi

ポイントを配列などに保存してから、それらを onPostExecute に返す必要があります

于 2013-09-04T19:04:31.267 に答える