问题
I'm working with googlemaps V2 and I've made my google api key V2. First time I run this program it's work and then when I run it again until this time, its always can't show the map and only coordinate that I give. And when I see the logcat the error was "Couldn't get connection factory client". And when I open my map.xml graphical layout there's show "Failed to find style 'mapViewStyle' in current theme".
Anyone can help me how to fix the problem so the program can show the map? Thank you so much.


anyone know how to fix it? thank you so much.
this my mapactivity
package unai.s1.skripsi.atm;
import greendroid.widget.ActionBar;
import greendroid.widget.ActionBar.Type;
import java.util.List;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
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 unai.s1.skripsi.R;
import unai.s1.skripsi.atm.TowerController;
import unai.s1.skripsi.atm.TowerModel;
import unai.s1.skripsi.atm.MapOverlay;
public class Map extends MapActivity {
private MapView mapView;
private ActionBar actionBar;
private MapController mapController;
private GeoPoint gpUser, p;
private SharedPreferences prefLocation;
private Context mContext;
String lat, lon, name, alamat;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.map);
mContext = this;
actionBar = (ActionBar) findViewById(R.id.myActionBar);
actionBar.setTitle("Bandung Tour Guide");
actionBar.setType(Type.Empty);
actionBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
actionBar.getHandler();
initMap();
}
@SuppressWarnings("deprecation")
public void initMap() {
mapView = (MapView) findViewById(R.id.map);
View zoomView = mapView.getZoomControls();
LinearLayout myzoom = (LinearLayout) findViewById(R.id.zoom);
myzoom.addView(zoomView);
mapView.setStreetView(false);
mapView.setBuiltInZoomControls(true);
mapView.displayZoomControls(true);
// Untuk mengambil lokasi user saat ini
prefLocation = mContext.getSharedPreferences("mkul", 0);
double latUser = Double.parseDouble(prefLocation.getString("userLat",
"0"));
double lonUser = Double.parseDouble(prefLocation.getString("userLon",
"0"));
gpUser = new GeoPoint((int) (latUser * 1E6), (int) (lonUser * 1E6));
mapController = mapView.getController();
TowerController rc = new TowerController(mContext);
List<TowerModel> lsRm = rc.getAll();
for (int i = 0; i < lsRm.size(); i++) {
TowerModel poi = lsRm.get(i);
lat = poi.getLat();
lon = poi.getLon();
name = poi.getName();
alamat = poi.getAddress();
String coordinates[] = {lat, lon};
double lati = Double.parseDouble(coordinates[0]);
double longi = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lati * 1E6), (int) (longi * 1E6));
List<Overlay> mapOverlays = mapView.getOverlays();
int draw = R.drawable.marker;
Drawable drawable = this.getResources().getDrawable(draw);
MapOverlay itemizedoverlay = new MapOverlay(drawable,mContext,poi);
OverlayItem overlayitem = new OverlayItem(p, name, alamat);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}
mapController.animateTo(gpUser);
mapController.setZoom(16);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
this is my map.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<greendroid.widget.ActionBar
android:id="@+id/myActionBar"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:background="@drawable/action_bar_background" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="AIzaSyAT5pGvWOLeEuugI8asdasE7as3osTaZjSQ"
android:clickable="true"
android:enabled="true"
/>
<LinearLayout
android:id="@+id/zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</LinearLayout>
this is my androidmanifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="unai.s1.skripsi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:icon="@drawable/bc1"
android:label="@string/app_name"
android:name=".hotel.mmMtowerApplication"
android:theme="@style/Theme.coba" >
<activity
android:label="@string/app_name"
android:name=".hotel.DashboardActivity"
android:screenOrientation="portrait" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Login Activity -->
<activity
android:label="Login Account"
android:name=".login.LoginActivity"></activity>
<!-- Register Activity -->
<activity
android:label="Register New Account"
android:name=".login.RegisterActivity"></activity>
<activity
android:name=".hotel.MTowerOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.MhotelOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.MpolisiOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.MkulinerOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.MwisataOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.MfoOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.MatmOpening"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.MTowerActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.Rsactivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.Polisiactivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.Kulineractivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.Wisataactivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.Foactivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.Atmactivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.Underconstructions"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.Tower"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".rs.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".polisi.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".kuliner.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".wisata.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".fo.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".atm.TowerDetailInformation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
</activity>
<activity
android:name=".hotel.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".rs.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".polisi.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".kuliner.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".wisata.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".fo.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".atm.About"
android:screenOrientation="portrait"
android:label="about aplikasi" >
</activity>
<activity
android:name=".hotel.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.MapRoute"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.Map"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".hotel.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".rs.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".polisi.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".kuliner.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".wisata.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".fo.MapDetail"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".atm.MapDetail"
android:screenOrientation="portrait" >
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" >
</uses-permission>
</manifest>
回答1:
As been already said, you are using objects from API v1
with a key from API V2
.
So instead of using MapView
as you currently do you will have to switch to MapFragment
or SupportMapFragment
(for supporting older android versions). Instead on MapActivity
you will have to switch to FragmentActivity
(in case you use SupportMapFragment
), or to a simple Activity
( in case you use MapFragment
)
Of course as said the key should be move to the Manifest file, and some additional permissions should be defined there.
To get a better idea on how you should do it, you can check this blog post I wrote on integrating Google Maps API V2
in your application:
Google Maps API V2
回答2:
As the google Map v1 API is already depricated, So you will no longer able to use it and you have to switch on Google Map v2 and need to develop the maps according to v2 api.
In google map v2 the maps in the layout are inflated using the fragment as below:
So instead of this google map
<com.google.android.maps.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="AIzaSyAT5pGvWOLeEuugI8asdasE7as3osTaZjSQ"
android:clickable="true"
android:enabled="true"
/>
Try as below:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
For more details Check out Implementation HERE
回答3:
Instead of defining the metadata key in the layout file, declare it in the manifest.xml as follows.
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyAT5pGvWOLeEuugI8asdasE7as3osTaZjSQ" />
来源:https://stackoverflow.com/questions/20605352/android-mapactivity-googlemaps-couldnt-get-connection-factory-client