Android 如何为每个城市创建新的活动?

Android 如何为每个城市创建新的活动?,android,google-maps,google-places-api,Android,Google Maps,Google Places Api,请原谅我是android应用程序构建新手 我的计划是建立一个应用程序,将采取一个城市,并为它打开一个新的活动。问题是我真的不知道该怎么做。我的计划将非常类似于应用程序yik yak,在你去的地方,在某个区域放置一个标记,它会带你去该位置的活动。我相信yik yak只展示与您关系密切的项目,但我的计划是带您参加该地点的活动。这样做是可能的,还是我应该走yik yak的路线,只展示在你一定半径范围内的东西 在哪里可以开始学习如何进行此操作?首先,您需要为地图选择一个提供商 我想说谷歌地图是一个很好的

请原谅我是android应用程序构建新手

我的计划是建立一个应用程序,将采取一个城市,并为它打开一个新的活动。问题是我真的不知道该怎么做。我的计划将非常类似于应用程序yik yak,在你去的地方,在某个区域放置一个标记,它会带你去该位置的活动。我相信yik yak只展示与您关系密切的项目,但我的计划是带您参加该地点的活动。这样做是可能的,还是我应该走yik yak的路线,只展示在你一定半径范围内的东西


在哪里可以开始学习如何进行此操作?

首先,您需要为地图选择一个提供商

我想说谷歌地图是一个很好的开始,正如你在标签中所建议的,但是要注意,如果没有播放服务,它可能无法在一些中国设备上使用。 您可以按照此处的文档快速入门

关于要在地图上显示的管脚数量,我认为显示很多管脚没有问题,只要在用户缩小时对标记进行分组,这样就不会有10个管脚重叠。 因此,如果在相当缩放的状态下,用户单击一组标记,则可以显示一个对话框来选择城市。 如果用户放大很多并单击特定的pin,则可以启动活动

您主要关心的是收听缩放级别的更改,如:

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 
        } 
    } 
}); 
学分:

然后,您可以创建列表的映射,映射的键将是自定义的lat/long对象。我们叫它Pin。Pin为其提供了一个自定义的isCloseTo方法(在params中获取zoomlevel和其他Pin对象)

您的Pin.isCloseTo方法将与以下类似:

根据“距离”返回值和缩放级别返回true或false

处理所有城市后,可以浏览地图并为每个Pin键创建标记


在放大状态下,您将有一个列表中只包含一个项目的地图,但我认为这不是什么大问题

当点击地图上的位置时,yik yak不会开始新的活动。而是在单击新位置时更新其下的数据。我想你的意思是,当点击谷歌地图上的一个新城市时,你想刷新/更改显示的数据吗

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