如何在Google Maps中设置校园地图边界?更换坐标后应用崩溃求助
解决Google Maps LatLngBounds导致应用崩溃的问题
嘿,我猜你遇到的问题是因为LatLngBounds构造函数的参数顺序搞反了!
问题原因
Google Maps的LatLngBounds类要求构造函数的第一个参数是**西南角(southwest)的坐标,第二个参数是东北角(northeast)**的坐标。这需要满足两个核心条件:
- 西南角的纬度值必须 ≤ 东北角的纬度值(北半球中,纬度数值越小越靠南)
- 西南角的经度值必须 ≤ 东北角的经度值(东经区域中,经度数值越小越靠西)
看你的校园坐标代码:
private LatLngBounds CPUBounds = new LatLngBounds( new LatLng(10.732581, 122.548413), // 纬度10.732581(更靠北) new LatLng(10.730052, 122.549958) // 纬度10.730052(更靠南) );
这里你把更靠北的点放在了本该是西南角的第一个参数位置,导致LatLngBounds初始化逻辑出错,最终引发应用崩溃。
两种解决方法
方法1:手动调整坐标顺序
直接调换两个坐标的位置,确保第一个是西南角(纬度、经度都更小的点),第二个是东北角(纬度、经度都更大的点):
private LatLngBounds CPUBounds = new LatLngBounds( new LatLng(10.730052, 122.548413), // 西南角:纬度、经度都更小 new LatLng(10.732581, 122.549958) // 东北角:纬度、经度都更大 );
方法2:使用Builder模式(更推荐新手)
如果你不确定坐标的方位,用LatLngBounds.Builder可以自动帮你计算正确的边界,完全不用纠结顺序:
// 先创建Builder实例 LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); // 添加所有需要包含的坐标点 boundsBuilder.include(new LatLng(10.732581, 122.548413)); boundsBuilder.include(new LatLng(10.730052, 122.549958)); // 构建最终的LatLngBounds对象 private LatLngBounds CPUBounds = boundsBuilder.build();
这种方式不仅不会出错,还能方便地添加多个坐标点来扩展边界范围。
内容的提问来源于stack exchange,提问作者Mr. Dontknowhowtocode
相关产品推荐
相关产品推荐

