0

複数のジオポイントの場所を Google マップにプロットしようとすると、このエラーが発生します。PHPとJSONを介してMySQLデータベースから緯度と経度を読み取っています。Couldn't get connection factory clientCouldn't get connection factory client - fighting with Google MapsAndroid MapActivity : Couldn't get connection factory clientなどの主な例を見てきました。
2 つの異なるキーを生成し、同じエラーを返したので、無効な API キーではないことを確認できます。APIレベルの問題でもありません.APIレベル17とレベル8でアプリケーションを実行しようとしましたが、まだ喜びはありません. コードを実行すると、問題なくマップが表示され、例外のトーストメッセージが表示されます「コンテンツの表示エラー」
これが私のmapview.javaコードです:

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.graphics.drawable.Drawable;
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class mapview extends MapActivity 
{

//protected MapView mapview;

JSONArray jarray;
String result=null;
InputStream is=null;
StringBuilder sb=null;

double LAT;
double LNG;

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapview);

    MapView mapview = (MapView) findViewById(R.id.mapview);
    mapview.setBuiltInZoomControls(true);

    //ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

    try 
    {

         HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost("http://10.0.2.2/displaymarkers.php");
         //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
         HttpResponse response = httpclient.execute(httppost);
         HttpEntity entity = response.getEntity();
         is = entity.getContent();

    }

    catch(Exception e)
    {
        Log.e("log_tag", "Error in http connection"+e.toString());
    }


        try{        


        jarray = new JSONArray("$json_output[]");
        JSONObject json_data = null;
                for(int i = 0; i < jarray.length(); i++)
                {
                    json_data = jarray.getJSONObject(i);

                    LAT=json_data.getDouble("lat");
                    LNG=json_data.getDouble("lng");

                    GeoPoint point = new GeoPoint((int)(LAT * 1E6), (int)(LNG * 1E6));
                    OverlayItem overlayitem = new OverlayItem(point, "TEXT", null);

                    List<Overlay> mapOverlays = mapview.getOverlays();
                    Drawable drawable = this.getResources().getDrawable(R.drawable.marker);
                    myItemizedOverlay itemizedoverlay = new myItemizedOverlay(drawable, this);

                    MapController mapController = mapview.getController();

                    //mapController.animateTo(point);
                    mapController.setZoom(8);

                    itemizedoverlay.addOverlay(overlayitem);
                    mapOverlays.add(itemizedoverlay);
                }
            }
            catch(JSONException e1)
            {
            Toast.makeText(getBaseContext(), "Error displaying contents" ,Toast.LENGTH_LONG).show();
            }       
                catch (ParseException e1) 
                {
                e1.printStackTrace();
                }   
    }
    @Override
    protected boolean isRouteDisplayed() 
    {
        return false;
    }
}

これは私の ItemizedOverlay.java コードです:

    import java.util.ArrayList;

    import android.app.AlertDialog;
    import android.content.Context;
    import android.graphics.drawable.Drawable;

    import com.google.android.maps.OverlayItem;
    import com.google.android.maps.ItemizedOverlay;


    public class myItemizedOverlay extends ItemizedOverlay 
    {

        private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
        private Context mContext;

        public myItemizedOverlay(Drawable marker, Context context) 
        {
            super(boundCenterBottom(marker));
            mContext = context;

        }

        public void addOverlay(OverlayItem overlay) 
        {
            mapOverlays.add(overlay);
            this.populate();
        }


        @Override
        protected OverlayItem createItem(int i) 
        {
          return mapOverlays.get(i);
        }

        @Override
        public int size() 
        {
            return mapOverlays.size();
        }

        @Override
        protected boolean onTap(int index) 
        {
          OverlayItem item = mapOverlays.get(index);
          AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
          dialog.setTitle(item.getTitle());
          dialog.setMessage(item.getSnippet());
          dialog.show();
          return true;
        }

    }

事前に感謝します。

4

1 に答える 1

0

これらのキーを最近生成した場合、API v1 は非推奨で機能しないため、結果を取得できません。

Maps API v2 に切り替えることをお勧めします: https://developers.google.com/maps/documentation/android/

新しい API は API v1 とコードを共有していないため、古いコードを使用しないでください。

于 2013-04-09T21:39:42.450 に答える