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

Posted

技术标签:

【中文标题】如何为每个城市创建新活动?【英文标题】:How do I create a new activity for each city? 【发布时间】:2015-07-23 03:49:31 【问题描述】:

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

我的计划是构建一个应用程序,它会占用一个城市并为它打开一个新的活动。问题是我真的不知道该怎么做。我的计划与 yik yak 应用程序的做法非常相似,您可以在某个区域放置一个标记,然后将您带到该位置的活动。我相信 yik yak 只显示那些离你很近的人,但我的计划是带你去那个地方的活动。是否可以这样做,或者我应该采取 yik yak 的路线,只显示你一定半径内的东西?

我可以从哪里开始学习如何做到这一点?

【问题讨论】:

【参考方案1】:

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

我会说谷歌地图是一个好的开始,正如你在标签中建议的那样,但要注意,它可能在一些没有播放服务的中国设备上不可用。 您可以按照此处的文档快速入门 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://***.com/a/15046761/689710

然后,您可以创建列表地图,地图的键将是自定义纬度/经度对象。我们称它为 Pin。 Pin 为其提供了一个自定义 isCloseTo 方法(在 params 中获取缩放级别和其他 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://***.com/a/18170277/689710

根据“dist”返回和您的缩放级别返回真或假。

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

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

【讨论】:

【参考方案2】:

当点击地图上的地点时,您知道 yik yak 并没有开始新的活动。当单击新位置时,它会更新其下方的数据。我想你的意思是你想刷新/更改点击谷歌地图上的新城市时显示的数据?

【讨论】:

以上是关于如何为每个城市创建新活动?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中,如何为向量中的每个元素创建一个新对象?

如何为每位新访客创建唯一ID?

在 SQL 中,如何为另一列的每个不同值创建新的值列?

如何为背景图像的更改设置动画?

Spark Scala - 如何为每个组创建新列,然后在 spark 数据框中分解列值

如何为实时数据库设置安全规则,但允许注册新用户并创建哈希图?