我想通過使用「位置名稱」是「國家/地區名稱」來將MapView設置爲位置。我得到異常: 通過在MapView中使用位置名稱動畫到位置-Android
如果你不能看到那麼PIC的例外是:: IOException異常:服務不可用錯誤無法獲取連接工廠客戶。
我使用的代碼如下:
public class ShowMapView extends MapActivity
{
MapView mapView;
MapController mapController;
String Country;
@Override
public void onCreate(Bundle bundleMap)
{
super.onCreate(bundleMap);
setContentView(R.layout.show_map);
mapView = (MapView)findViewById(R.id.MapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.setBuiltInZoomControls(true);
Intent intent = this.getIntent();
Country = intent.getStringExtra("Country");
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
Log.v("GEOCODER", geocoder.toString());
try
{
Log.v("MAP", "TRY BLOCK");
List<Address> address = geocoder.getFromLocationName(Country, 2);
Log.v("MAP", "Country: " + Country);
if(address.size() > 0)
{
Log.v("MAP", "GeoPoint p");
GeoPoint p = new GeoPoint((int)(address.get(0).getLatitude() * 1E6),
(int)(address.get(0).getLongitude() * 1E6));
Log.v("MAP", "L&L done");
mapController.animateTo(p); Log.v("MAP", "Animate to P");
mapView.invalidate(); Log.v("MAP", "Invalidate()");
}
}
catch(IOException e)
{
Log.v("MAP", "CATCH BLOCK");
e.printStackTrace();
}
}
@Override
protected boolean isRouteDisplayed()
{
Log.v("MAP", "ROUTE: false");
return false;
}
}
清單文件是如下::
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.project.LawSource"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="com.google.android.maps"/>
<activity
android:name=".GetCountry"
android:label="@string/app_label" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="ShowMapView"
android:label="@string/app_name">
</activity>
</application>
</manifest>
我照着this tutorial工作,但它不能正常工作。
讓我知道如果我失去了一些東西。
我得到的問題,相同this blog
希望有一個解決方案。
在此先感謝,
Haps。
感謝您的回覆。 此代碼給出了這個異常,但也沒有幫助我到達期望的位置。 – Harpreet 2012-03-05 10:47:44
我寫了一個非常簡單的地理編碼器測試。我注意到你實際上並沒有設置你的mapController。在mapView被分配後,你應該設置mapController = mapView.getController();我有一種感覺是一個問題,加上我懷疑你的getStringExtra對intent對象的調用可能返回null。另外,你的國家變量應該是小寫的。我發佈了我非常簡單的例子。 – 2012-03-05 11:33:53
感謝您的回覆,我根據您的調整了我的代碼,但異常仍然是相同的,它執行代碼到TRY BLOCK並執行「列表
address = geocoder.getFromLocationName(country,2)」時執行CATCH Block。 「因此該行不執行,現在它也停止顯示之前顯示的地圖。 – Harpreet 2012-03-06 04:41:38