Java 无法获取连接工厂客户端错误,我无法查看映射
嗨,这里我正试图加载我的位置在地图上,但我只是得到空白画布Java 无法获取连接工厂客户端错误,我无法查看映射,java,android,google-maps,Java,Android,Google Maps,嗨,这里我正试图加载我的位置在地图上,但我只是得到空白画布 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.exmp.way" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkV
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.exmp.way"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="com.way.fameceramic.permission.MAPS_RECEIVE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name="com.exmp.way.MapActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity></application> </manifest>
这是mainfest代码
这里是布局文件代码
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="xxx-xxxxxxxxxxx"/>
出于安全原因,我禁用了密钥
在此映射活动代码
import java.util.List;
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;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.view.Menu;
public class MapViewActivity extends MapActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_view);
// Displaying Zooming controls
MapView mapView = (MapView) findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
/**
* Changing Map Type
* */
// mapView.setSatellite(true); // Satellite View
// mapView.setStreetView(true); // Street View
mapView.setTraffic(true); // Traffic view
/**
* showing location by Latitude and Longitude
* */
MapController mc = mapView.getController();
double lat = Double.parseDouble("22.270928");
double lon = Double.parseDouble("70.789909");
GeoPoint geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon * 1E6));
mc.animateTo(geoPoint);
mc.setZoom(15);
mapView.invalidate();
/**
* Placing Marker
* */
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.mark_red);
AddItemizedOverlay itemizedOverlay =
new AddItemizedOverlay(drawable, this);
OverlayItem overlayitem = new OverlayItem(geoPoint, "Fame Ceramic", "Way web Solution");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
import java.util.List;
导入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;
导入android.os.Bundle;
导入android.app.Activity;
导入android.graphics.drawable.drawable;
导入android.view.Menu;
公共类MapViewActivity扩展了MapActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map\u视图);
//显示缩放控件
MapView MapView=(MapView)findViewById(R.id.MapView);
mapView.SetBuilTinZoomControl(真);
/**
*更改地图类型
* */
//mapView.setSatellite(true);//卫星视图
//mapView.setStreetView(true);//街景
setTraffic(true);//流量视图
/**
*通过纬度和经度显示位置
* */
MapController mc=mapView.getController();
双lat=double.parseDouble(“22.270928”);
double lon=double.parseDouble(“70.789909”);
地质点地质点=新的地质点((int)(lat*1E6),(int)(lon*1E6));
司仪(地点);;
mc.setZoom(15);
mapView.invalidate();
/**
*放置标记
* */
List mapOverlays=mapView.getOverlays();
Drawable Drawable=this.getResources().getDrawable(R.Drawable.mark_red);
AddItemizedOverlay项IzedOverlay=
新添加物(可拉伸,本);
OverlayItem OverlayItem=新的OverlayItem(地质点、“Fame陶瓷”、“Way web解决方案”);
itemizedOverlay.addOverlay(overlayitem);
添加(itemizedOverlay);
}
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
}
}
AddItemizeOverlay类源代码
import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
private Context context;
public AddItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public AddItemizedOverlay(Drawable defaultMarker, Context context) {
this(defaultMarker);
this.context = context;
}
@Override
protected OverlayItem createItem(int i) {
return mapOverlays.get(i);
}
@Override
public int size() {
return mapOverlays.size();
}
@Override
protected boolean onTap(int index) {
Log.e("Tap", "Tap Performed");
return true;
}
public void addOverlay(OverlayItem overlay) {
mapOverlays.add(overlay);
this.populate();
}
/**
* Getting Latitude and Longitude on Touch event
* **/
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
if (event.getAction() == 1) {
GeoPoint geopoint = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
// latitude
double lat = geopoint.getLatitudeE6() / 1E6;
// longitude
double lon = geopoint.getLongitudeE6() / 1E6;
Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show();
}
return false;
}
}
import java.util.ArrayList;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入android.util.Log;
导入android.view.MotionEvent;
导入android.widget.Toast;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.MapView;
导入com.google.android.maps.OverlayItem;
公共类AddItemizeOverlay扩展了ItemizeOverlay{
私有ArrayList mapOverlays=新ArrayList();
私人语境;
公共AddItemizedOverlay(可绘制默认标记){
super(boundCenterBottom(defaultMarker));
}
public AddItemizedOverlay(可绘制的defaultMarker,上下文){
这(默认标记);
this.context=上下文;
}
@凌驾
受保护的OverlayItem createItem(int i){
返回mapOverlays.get(i);
}
@凌驾
公共整数大小(){
返回mapOverlays.size();
}
@凌驾
受保护的布尔onTap(整数索引){
Log.e(“点击”,“点击执行”);
返回true;
}
公共void addOverlay(OverlayItem overlay){
mapOverlays.add(叠加);
这个。填充();
}
/**
*在触摸事件中获取纬度和经度
* **/
@凌驾
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{
如果(event.getAction()==1){
GeoPoint GeoPoint=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
//纬度
双纬度=地质点。getLatitudeE6()/1E6;
//经度
双lon=地质点。getLongitudeE6()/1E6;
Toast.makeText(上下文,“Lat:+Lat+”,Lon:+Lon,Toast.LENGTH_SHORT).show();
}
返回false;
}
}
在这里,我通过了我使用的所有代码。。。。给我答案我错在哪里
我刚得到这个你需要一个“谷歌程序员帐户”,为了得到它,也许是这样。你混合了Android地图API v1和v2。删除所有代码并遵循以下操作:
你不想在你的代码中再出现像
MapActivity
和GeoPoint
这样的东西了。当你打开谷歌地图时,你会看到更多信息吗?看起来你的问题是你的设备实际上没有从谷歌下载地图。。按照链接中的步骤进行操作