我想在我的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
我猜问题是“地图”,因为我不知道如何访问它。
答案 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解决方案会更快,并且会给你的用户带来更好的可用性。