0

我正在尝试获取地图中心(谷歌地图 api v2)的纬度和经度,以便在按下按钮时显示在文本视图中。但它一直在崩溃。我已经尝试了几件事,这对我来说是最好的,但是一旦你按下按钮就会崩溃:

我认为它在这条线上崩溃: MapView mapView = (MapView)findViewById(R.id.map); (因为我尝试删除 onClick 中的所有其他内容,但它仍然崩溃)

爪哇:

public class Main extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
        final GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map))
                   .getMap();

        map.setMyLocationEnabled(true);


        final TextView latitudeTV = (TextView) findViewById(R.id.latitude);
        final TextView longitudeTV = (TextView) findViewById(R.id.longitude);

        Button buttonCoor = (Button) findViewById(R.id.getCoor);    
        buttonCoor.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                MapView mapView = (MapView)findViewById(R.id.map);
                GeoPoint mapCenter = mapView.getMapCenter();
                int latInt = mapCenter.getLatitudeE6();
                int lonInt = mapCenter.getLongitudeE6();
                latitudeTV.setText(latInt);
                longitudeTV.setText(lonInt);

            }
        });

    }

我的代码有什么问题?

由于 api 密钥,我无法在模拟器上运行它,因此无法获取任何 logcat 信息。

谢谢

更新:

我也试过这个,但结果相同(按下按钮时崩溃)

        MapView mapView = (MapView)findViewById(R.id.map);
    GeoPoint mapCenter = mapView.getProjection().fromPixels(
        mapView.getWidth()/2,
        mapView.getHeight()/2);

final int lat = mapCenter.getLatitudeE6();
final int lon = mapCenter.getLongitudeE6();
4

1 回答 1

0

我终于解决了花了将近4个小时,哈哈!这就是我最终得到的:

final GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map)).getMap();  
...
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Point point = new Point(width / 2, height / 2);
LatLng latLng = map.getProjection().fromScreenLocation(point);

latitudeTV.setText(String.valueOf(latLng));

感谢这个人的教程:

http://patesush.blogspot.dk/2012/12/how-to-create-app-for-google-map-v2-in.html

于 2013-01-19T17:57:01.527 回答