根据API Reference介绍,
plus.geolocation.getCurrentPosition()返回的参数格式为:
readonly attribute Coordinates coords;
readonly attribute String coordsType;
readonly attribute Number timestamp;
readonly attribute Address address;
readonly attribute String addresses;
而 plus.maps.Map.geocode()返回的参数格式为:
event.address; // 转换后的地理位置
event.coord; // 转换后的坐标信息
event.coordType; // 转换后的坐标系类型
是不是有点分裂啊??
一边是 coords, coordsType,一边叫 coord, coordType,
一不小心就弄错。
不打算改一致么?
2 个回复
DCloud_Android_ST
这个我们后期会不断完善的 感谢你的反馈
lukas (作者)
谢谢响应!地图确实是很麻烦的东西,多种provider,多种coordsType,多套API,要集成起来很辛苦。
因为我也在考虑写一个集成多种地图来源的JS库。
不知道 plus.maps.Map 和 plus.geolocation 的实现,是否基于供应商的JavaScript API,例如百度地图的JS API? 或者基于Android原生内置、或者百度地图的Android SDK?
如果是基于百度地图供应商的 JS API,那么我就去直接调用百度地图JS。
如果是基于安卓SDK的,那么plus.maps应该就能提高不少性能,那我就不自己写了,就用plus.maps
除了上述的coord vs. coords 不一致,我还注意到
plus.maps.Map.reverseGeocode()返回的回调参数 evt.address 是字符串,
而 plus.geolocation.getCurrentLocation()返回的回调参数是 evt.address 是 {country:???, province:???, city:???, district:???, street:???, poiName:???}
也不一致,容易混淆。我猜 plus.maps.Map.reverseGeocode()也是调用了百度地图的new Geocoder().getLocation接口,那么返回的应该是包含 addressComponents=={province, city, district...} 的详细地址对象呀,为何省略成了一个字符串呢?
总之建议,定义一套plus自己的Position, Address格式,不管来源是什么,都转换成plus格式。