Android 无法获取要添加到google地图的地理点,原因是:;不能';无法获取连接工厂客户端
当我试图在谷歌地图上绘制多个地质点位置时,出现了这个错误。我通过PHP和JSON从MySQL数据库读取纬度和经度。我查看了主要示例,例如,.Android 无法获取要添加到google地图的地理点,原因是:;不能';无法获取连接工厂客户端,android,google-maps,mapactivity,mylocationoverlay,Android,Google Maps,Mapactivity,Mylocationoverlay,当我试图在谷歌地图上绘制多个地质点位置时,出现了这个错误。我通过PHP和JSON从MySQL数据库读取纬度和经度。我查看了主要示例,例如,.我可以确认它不是无效的API密钥,因为我生成了两个不同的密钥并返回了相同的错误。这也不是API级别的问题,我尝试在API级别17和级别8上运行应用程序,但仍然没有任何乐趣。当我运行代码时,它会显示映射没有问题,然后进入异常toast消息“显示内容时出错”这是我的mapview.java代码: import java.util.ArrayList; impor
我可以确认它不是无效的API密钥,因为我生成了两个不同的密钥并返回了相同的错误。这也不是API级别的问题,我尝试在API级别17和级别8上运行应用程序,但仍然没有任何乐趣。当我运行代码时,它会显示映射没有问题,然后进入异常toast消息“显示内容时出错”
这是我的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;
}
}
import java.util.ArrayList;
导入java.util.List;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.graphics.drawable.drawable;
导入android.net.ParseException;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.Toast;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapController;
导入com.google.android.maps.MapView;
导入com.google.android.maps.Overlay;
导入com.google.android.maps.OverlayItem;
公共类mapview扩展了MapActivity
{
//受保护的地图视图;
杰索纳雷·贾雷;
字符串结果=null;
InputStream=null;
StringBuilder sb=null;
双LAT;
双液化天然气;
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
MapView MapView=(MapView)findViewById(R.id.MapView);
mapview.SetBuilTinZoomControl(真);
//ArrayList nameValuePairs=新的ArrayList();
尝试
{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://10.0.2.2/displaymarkers.php");
//setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpclient.execute(httppost);
HttpEntity=response.getEntity();
is=entity.getContent();
}
捕获(例外e)
{
e(“Log_标记”,“http连接错误”+e.toString());
}
试试{
jarray=newJSONArray($json_output[]);
JSONObject json_data=null;
for(int i=0;i
这是我的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;
}
}
import java.util.ArrayList;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入com.google.android.maps.OverlayItem;
导入com.google.android.maps.ItemizedOverlay;
公共类MyItemizeOverlay扩展了ItemizeOverlay
{
私有ArrayList mapOverlays=新ArrayList();
私有上下文;
公共MyItemizeOverlay(可绘制标记,上下文)
{
super(boundCenterBottom(marker));
mContext=上下文;
}
公共void addOverlay(OverlayItem overlay)
{
mapOverlays.add(叠加);
这个。填充();
}
@凌驾
受保护的OverlayItem createItem(int i)
{
返回mapOverlays.get(i);
}
@凌驾
公共整数大小()
{
返回mapOverlays.size();
}
@凌驾
受保护的布尔onTap(整数索引)
{
OverlayItem item=mapOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(mContext);
setTitle(item.getTitle());
setMessage(item.getSnippet());
dialog.show();
返回true;
}
}
如果您最近生成了这些密钥,您将无法获得结果,因为API v1已弃用,无法工作 您可能希望切换到地图API v2:
不要尝试使用旧代码,因为新API不会与API v1共享任何代码。可能是我唯一的选择,谢谢您的输入。我怀疑我会得到比你更好的答案,所以我会接受它,并用新版本再试一次。再次感谢。