webview中的地图添加标记

时间:2012-05-15 10:54:15

标签: android google-maps-api-3

我想在我的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 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

答案 2 :(得分: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);

我希望这会对你有所帮助。

答案 3 :(得分:0)

有一种方法可以在Fragment中使用MapActivity。有一个Fragment使用LocalActivityManager来创建一个Activity并在Fragment中显示它。

有关详细信息,请参阅此问题:MapView in a Fragment (Honeycomb)

这不是一个非常好的解决方案,但它是在片段中显示Android地图的唯一方法。这将允许您使用正确的API来处理MapItems。这些也不是Android最好用的部分,但开发webview解决方案会更快,并且会给你的用户带来更好的可用性。