2012-05-15 77 views
0

我想在我的android中添加地圖,我無法擴展MapActivity,因爲地圖位於選項卡中,它會擴展Fragment。webview中的地圖添加標記

所以我使用的WebView,我也跟着這樣的代碼:

https://developers.google.com/maps/articles/android_v3

的問題是,當我嘗試添加一個標記,在HTML文件中,我有:

function createMarker(lat, lng){ 
var latlng = new google.maps.LatLng(lat, lng);   
var marker = new google.maps.Marker({ 
    position: latlng, 
    map: map 
}); 

return marker 

我想問題是「地圖」,因爲我不知道如何訪問這個。

+0

我找到了解決方案,我創建了標記,但是我沒有將它添加到地圖中。謝謝!! – user1256477

回答

3

首先,你需要做的創建另一個類是這樣的:

public class Exchanger extends FragmentMapActivity { 

    public static MapView mapView; 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 

} 

然後在片段類,您可以使用類名稱調用mapview,然後在地圖上添加標記

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    mMapView = Exchanger.mapView; 
+0

它對我非常有用.... – kyogs

+0

@yogeshkamaliya - 謝謝你 –

0

您不能延伸MapActivity但您可以實施LocationListener。所以你得到一個方法調用onLocationChanged。在這種方法中,你可以得到GeoPoint

geoPoint = new GeoPoint((int) (location.getLatitude() * 1E6) , (int) (location.getLongitude() * 1E6)); 

然後你可以創建自己的類延伸Overlay類。在那裏你會得到一個方法調用draw。在該方法中,您可以創建自己的點。下面 示例代碼...

 Point screenPoints = new Point(); 
     mapView.getProjection().toPixels(geoPoint, screenPoints); 

     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pushpin); 

     canvas.drawBitmap(bitmap, screenPoints.x, screenPoints.y, null); 

我希望這會幫助你。

0

有一種方法可以在Fragment中使用MapActivity。使用LocalActivityManager創建一個Activity並將其顯示在Fragment中,這是一個片段破解。

欲瞭解更多有關這看這個問題:MapView in a Fragment (Honeycomb)

這不是一個很好的解決方案,但它是顯示一個片段內的Android地圖的唯一途徑。這將允許您使用正確的API來處理MapItems。這些也不是使用Android最好的部分,但是開發一個webview解決方案會更快,並且可以爲用戶提供更好的可用性。