我试图在我的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>
我可以看到地图,但问题是,当我看到地图时,它会在地图上显示一张国际象棋图。我在结果中附上了截图。如果有任何身体为什么它给我看了带边框的地图,请给我一个解决方案。
答案 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,我可以测试这是否是问题。在这种情况下,它似乎是一个错误: