原谅我是Android应用程序构建的新手。
我的计划是构建一个应用程序,它将占用一个城市并为其开启一项新活动。问题是我真的不知道该怎么做。我的计划非常类似于app yik yak如何在某个区域放置标记,并将它带到该位置的活动。我相信yik yak只会显示那些离你很近但是我的计划是带你去那个地方的活动。这可能是这样做的,还是我应该采用yik牦牛的路线,只展示你在某一半径范围内的东西?
我在哪里可以开始学习如何做到这一点?
答案 0 :(得分:0)
首先,您需要为地图选择提供商。
我想说谷歌地图是你在标签中建议的一个良好的开端,但要注意,它可能在没有播放服务的某些中国设备上可用。 您可以按照此处的文档快速入门 https://developers.google.com/maps/documentation/android/
关于要放在地图上的引脚数量,我发现显示很多没有问题,只需在用户缩小时对标记进行分组,这样就不会有10个引脚重叠。 因此,如果处于非常放大的状态,用户单击一组标记,您可以显示一个对话框来选择城市。 如果用户放大并点击特定图钉,则可以开始活动。
您主要担心的是收听缩放级别更改,例如:
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
private float currentZoom = -1;
@Override
public void onCameraChange(CameraPosition pos) {
if (pos.zoom != currentZoom){
currentZoom = pos.zoom;
// do you action here
}
}
});
致谢:https://stackoverflow.com/a/15046761/689710
然后,您可以创建一个列表地图,地图的键将是一个自定义的纬度/长度对象。我们称之为Pin。 Pin为它提供了一个自定义的isCloseTo方法(在params中使用zoomlevel,以及另一个Pin对象)。
For each city you want to add on the map
For each key in the map
If the Pin object of your city isCloseTo the Pin key of the map
Add it to the list for that key
Else
Add a new Map entry with you city Pin as key and a list with your city as value
你Pin.isCloseTo方法将以某种方式类似于:
https://stackoverflow.com/a/18170277/689710
根据“dist”返回和缩放级别返回true或false。
处理完所有城市后,您可以浏览地图并为每个Pin键创建标记。
在放大状态下,您将拥有一个包含仅包含一个项目的列表的地图,但我认为这不是一个问题。