0

我想在我的 android 中添加地图,我无法扩展 MapActivity,因为该地图位于标签蚂蚁中,它扩展了 Fragment。

所以我使用的是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

我想问题是“地图”,因为我不知道如何访问它。

4

4 回答 4

3

首先,您必须像这样创建另一个类:

public class Exchanger extends FragmentMapActivity {

    public static MapView mapView;

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

}

然后在片段类中,您使用类名调用地图视图,然后在地图上添加标记

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

    mMapView = Exchanger.mapView;
于 2012-05-15T11:27:08.357 回答
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);

我希望这能帮到您。

于 2012-05-15T11:27:39.823 回答
0

您需要正确初始化地图。请参阅入门教程:

于 2012-05-15T11:20:29.470 回答
0

有一种方法可以在 Fragment 中使用 MapActivity。这是一个使用 LocalActivityManager 创建 Activity 并将其显示在 Fragment 中的 Fragment 的小技巧。

有关此问题的更多信息,请参阅此问题:MapView in a Fragment (Honeycomb)

这不是一个很好的解决方案,但它是在 Fragment 中显示 Android 地图的唯一方法。这将允许您使用正确的 API 来处理 MapItem。这些也不是 Android 最好用的部分,但开发 webview 解决方案会更快,并且也会为您的用户提供更好的可用性。

于 2012-05-15T12:31:45.347 回答