我已經在我的android應用中實現了谷歌地圖V2,現在我想做一些不同的事情。我用一個標記顯示了一個位置(經度,緯度)。問題在於,這在我的活動中顯示爲地圖。我想將它顯示爲ImageView,並且只有當有人點擊它時才顯示地圖界面。Android谷歌地圖顯示爲圖片
基本上我想要做的是位置的靜態預覽,並將其顯示爲圖片(帶有框架和圓角)點擊後,打開地圖並提供所有功能。
有沒有辦法將地圖片段放入ImageView?
任何幫助,您可以提供將不勝感激。
感謝
我已經在我的android應用中實現了谷歌地圖V2,現在我想做一些不同的事情。我用一個標記顯示了一個位置(經度,緯度)。問題在於,這在我的活動中顯示爲地圖。我想將它顯示爲ImageView,並且只有當有人點擊它時才顯示地圖界面。Android谷歌地圖顯示爲圖片
基本上我想要做的是位置的靜態預覽,並將其顯示爲圖片(帶有框架和圓角)點擊後,打開地圖並提供所有功能。
有沒有辦法將地圖片段放入ImageView?
任何幫助,您可以提供將不勝感激。
感謝
您可以使用谷歌地圖內置的快照方法,捕獲預覽,並在ImageView
顯示。您可以以任何喜歡的方式設置ImageView
的樣式,並且在點擊預覽時設置一個可以執行某些操作的clickListener。這裏有一個例子:
LatLng latLng = new LatLng(35.0116363, 135.7680294);
// Add Marker
mMap.addMarker(new MarkerOptions().position(latLng));
// Center map on the marker
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(latLng, 4.0f);
mMap.animateCamera(yourLocation);
final ImageView mapPreview = (ImageView) findViewById(R.id.mapPreview);
mapPreview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Hide the preview, to reveal the map
mapPreview.setImageBitmap(null);
mapPreview.setLayoutParams(new RelativeLayout.LayoutParams(0, 0));
// Or start Google Maps app
// String uri = String.format(Locale.ENGLISH, "geo:%f,%f", 50.0, 0.1);
// Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
// startActivity(intent);
}
});
mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
// Make a snapshot when map's done loading
mMap.snapshot(new GoogleMap.SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
mapPreview.setLayoutParams(new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mapPreview.setImageBitmap(bitmap);
// If map won't be used afterwards, remove it's views
// ((FrameLayout)findViewById(R.id.map)).removeAllViews();
}
});
}
});
有一個稍微不同的選項,可以達到同樣的效果,需要非常少的編碼,提供您的應用程序可以使用網絡:您可以撥打Google Static Maps API索要任意一個地圖圖像中心,縮放級別,大小和其他功能(如標記和路徑)。
例如鏈接:
https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=14&size=600x300
產生以下圖片:
這使得它非常容易地顯示在ImageView
部件的地圖:你只需要根據位置數據和尺寸構建適當的URL,然後使用任何圖像加載框架(如Picasso,Volley,)顯示圖像c。我們現在已經使用了這個功能幾年了。
這在顯示小地圖的ListView
時特別有用。在這些情況下,要求提供n快照會有問題,而n圖像下載應該可以正常工作。
第三種選擇,這將在未來一週左右變爲可用,根據this announcement,是新精簡版地圖模式,該模式將被釋放6.5谷歌Play服務的一部分:
此外,還有一種情況,你要提供一些小的貼圖,或者 地圖是如此之小,有意義的互動是不切實際的,例如 作爲一個新的「精簡版模式」地圖選項,非常適合 情況縮略圖在列表中。精簡模式地圖是位於指定位置和縮放級別的地圖 的位圖圖像。
在lite模式下,標記和形狀繪製在客戶端的靜態圖像頂部,因此您仍然可以完全控制它們。精簡模式 支持所有地圖類型,我的位置圖層和一個完全交互式地圖的功能子集。
聽起來和你需要的完全一樣,前提是你可以等待更新的SDK幾天。 :)
您能否提供完整代碼 – Abhishek