在Android模拟器中显示Google地图

时间:2011-05-18 23:21:13

标签: android google-maps

我试图在我的Android应用程序中使用谷歌地图。

我为用户添加了两项权限:INTERNET和ACCESS_FINE_LOCATION“ 并且 : “uses-library android:name =”com.google.android.maps“ 这是我展示地图的活动:

public class SportEventActivity extends MapActivity {
    private MapController mapController;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sportevent);
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            // Reads the parameters to this view
            String sportName = extras.getString(Utility.SPORT_NAME);
            String venueName = extras.getString(Utility.VENUE_NAME);
            String startDate = extras.getString(Utility.START_DATE);
            String endDate = extras.getString(Utility.END_DATE);
            final String latitude = extras.getString(Utility.LATITUDE);
            final String longitude = extras.getString(Utility.LONGITUDE);   
            TextView text1 = (TextView) findViewById(R.id.sedSportName);
            text1.setText("Sport: " + sportName);
            TextView text2 = (TextView) findViewById(R.id.sedVenue);
            text2.setText("Venue: " + venueName);
            TextView text3 = (TextView) findViewById(R.id.sedStartDate);
            text3.setText("Start date: " + startDate);
            TextView text4 = (TextView) findViewById(R.id.sedEndDate);
            text4.setText("End date: " + endDate);
            MapView mapView = (MapView) findViewById(R.id.mapview2);
            mapView.setBuiltInZoomControls(true);
            mapView.setStreetView(true);
            this.mapController = mapView.getController();
            this.mapController.setZoom(16);
            Double lat = getCoordinate(latitude) * 1E6;
            Double lng = getCoordinate(longitude) * 1E6;
            mapController.setCenter(new GeoPoint(lat.intValue(), lng.intValue()));

        }
    }

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

    private Double getCoordinate(String coordinate) {
        return Double.parseDouble(coordinate);
    }
}

您还可以找到与此活动相关的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:stretchColumns="1" android:id="@+id/sedLayout">

    <TableRow>
    </TableRow>

    <TableRow>
        <TextView android:layout_column="1" android:padding="3dip"
            android:text="Sport name" android:id="@+id/sedSportName" />
        <TextView android:gravity="right" android:padding="3dip" />
    </TableRow>

    <TableRow>
        <TextView android:layout_column="1" android:padding="3dip"
            android:text="Venue" android:id="@+id/sedVenue" />
        <TextView android:gravity="right" android:padding="3dip" />
    </TableRow>

    <TableRow>
        <TextView android:padding="3dip" />
        <TextView android:padding="3dip" android:text="Start Date"
            android:id="@+id/sedStartDate" />
    </TableRow>

    <TableRow>
        <TextView android:padding="3dip" />
        <TextView android:padding="3dip" android:text="End Date"
            android:id="@+id/sedEndDate" />
        <TextView android:gravity="right" android:padding="3dip" />
    </TableRow>
    <TableRow>
        <TextView android:padding="3dip" />
        <View android:layout_height="2dip" android:background="#FF909090" />        
        <TextView android:padding="3dip" />
    </TableRow>

    <TableRow>
    </TableRow>
    <com.google.android.maps.MapView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapview2" android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:clickable="true"            
            android:apiKey="0aULnfycQonb-l_B1QlcK8u4POo4_oKjnmqMU1Q" />
</TableLayout>

我可以看到地图,但问题是,当我看到地图时,它会在地图上显示一张国际象棋图。我在结果中附上了截图。如果有任何身体为什么它给我看了带边框的地图,请给我一个解决方案。

here is the screen shot of

1 个答案:

答案 0 :(得分:0)

<击> 我想这是因为你在TableLayout中扩展了mapview(但是在TableRow之外)。我将整个事物包装在垂直方向的RelativeLayout中,先放置TableLayout然后再放置mapview。

我已完全复制了您的布局,并且没有遇到您遇到的问题。唯一的区别是我在地图中心的坐标:

m_mapView = (MapView) findViewById(R.id.mapview);
m_mapView.setBuiltInZoomControls(true);
m_mapView.setClickable(true);

m_mapView.setStreetView(true);
m_mapController = m_mapView.getController();
m_mapController.setZoom(16);
m_mapController.setCenter(new GeoPoint((int)(47.975 * 1E6), (int)(17.056 * 1E6)));!

如果您发布的坐标字符串正在解析并传入setCenter,我可以测试这是否是问题。在这种情况下,它似乎是一个错误:

screenshot