由于;无法让Geopoints添加到谷歌地图;无法获取连接工厂客户端

问题描述:

我在尝试将多个Geopoint位置绘制到Google地图上时出现此错误。我正在通过PHP和JSON从MySQL数据库读取经纬度。我看过主要的例子,如Couldn't get connection factory client,Couldn't get connection factory client - fighting with Google Maps,Android MapActivity : Couldn't get connection factory client
我可以确认它不是无效的API密钥,因为我生成了2个不同的密钥并返回了相同的错误。这也不是API级别的问题,我尝试在API级别17和级别8上运行应用程序,但仍然没有喜悦。当我运行的代码,它显示的地图没有问题,然后获取到的“错误显示内容的”我的异常敬酒消息
这里是我的mapview.java代码:
由于;无法让Geopoints添加到谷歌地图;无法获取连接工厂客户端

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; 
     } 

    } 

我希望得到任何帮助,我要提前致谢。

如果您最近生成了这些密钥,您将无法获得结果,因为API v1已被弃用且无法使用。

您可能要切换到地图API V2:https://developers.google.com/maps/documentation/android/

不要试图用你的旧代码,因为新的API不共享API v1的任何代码。

+0

可能是我唯一的选择,谢谢你的输入。我怀疑我会得到比你更好的答案,所以我会接受它,并再次尝试新版本。再次感谢。 – jibbajava 2013-04-10 01:12:29