如何为每个城市创建一个新的 activity?
How do I create a new activity for each city?
请原谅我是 android 应用程序构建的新手。
我的计划是构建一个应用程序,该应用程序需要一个城市并为其打开一个新的 activity。问题是我真的不知道该怎么做。我的计划与应用程序 yik yak 的工作方式非常相似,您可以在某个区域放置一个标记,然后将您带到该位置的 activity。我相信 yik yak 只显示离你很近的那些,但我的计划是带你到那个位置的 activity。是否可以那样做,还是我应该走 yik yak 的路线,只显示你一定半径内的东西?
我可以从哪里开始学习如何做到这一点?
首先,您需要为您的地图选择一个提供商。
我会说 google 地图是一个好的开始,正如您在标签中所建议的,但请注意,它可能无法在某些没有播放服务的中国设备上使用。
您可以按照此处的文档快速入门
https://developers.google.com/maps/documentation/android/
关于你想在地图上放置的图钉数量,我认为显示很多图钉没有问题,你只需要在用户缩小时将标记分组,这样你就不会有 10 个图钉重叠他们自己。
因此,如果在相当缩放的状态下,用户单击一组标记,则可以显示一个对话框来选择城市。
如果用户放大很多并单击特定的图钉,那么您可以启动 activity。
您主要关心的是监听缩放级别的变化,例如:
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
}
}
});
学分:
然后,您可以创建列表地图,地图的键将是自定义纬度/经度对象。我们称它为 Pin。 Pin 为其提供了一个自定义的 isCloseTo 方法(采用参数中的缩放级别和另一个 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 方法将在某种程度上类似于:
根据 "dist" return 和您的缩放级别返回 true 或 false。
处理完所有城市后,您可以浏览地图并为每个 Pin 键创建一个标记。
在放大状态下,您将拥有一个地图,其中的列表仅包含一个项目,但我认为这不是什么大问题。
你知道当点击地图上的地点时,yik yak 并没有开始新的 activity。单击新位置时,它会更新其下方的数据。我想你的意思是你想要 refresh/change 当点击 google 地图上的新城市时显示的数据?
请原谅我是 android 应用程序构建的新手。
我的计划是构建一个应用程序,该应用程序需要一个城市并为其打开一个新的 activity。问题是我真的不知道该怎么做。我的计划与应用程序 yik yak 的工作方式非常相似,您可以在某个区域放置一个标记,然后将您带到该位置的 activity。我相信 yik yak 只显示离你很近的那些,但我的计划是带你到那个位置的 activity。是否可以那样做,还是我应该走 yik yak 的路线,只显示你一定半径内的东西?
我可以从哪里开始学习如何做到这一点?
首先,您需要为您的地图选择一个提供商。
我会说 google 地图是一个好的开始,正如您在标签中所建议的,但请注意,它可能无法在某些没有播放服务的中国设备上使用。 您可以按照此处的文档快速入门 https://developers.google.com/maps/documentation/android/
关于你想在地图上放置的图钉数量,我认为显示很多图钉没有问题,你只需要在用户缩小时将标记分组,这样你就不会有 10 个图钉重叠他们自己。 因此,如果在相当缩放的状态下,用户单击一组标记,则可以显示一个对话框来选择城市。 如果用户放大很多并单击特定的图钉,那么您可以启动 activity。
您主要关心的是监听缩放级别的变化,例如:
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
}
}
});
学分:
然后,您可以创建列表地图,地图的键将是自定义纬度/经度对象。我们称它为 Pin。 Pin 为其提供了一个自定义的 isCloseTo 方法(采用参数中的缩放级别和另一个 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 方法将在某种程度上类似于:
根据 "dist" return 和您的缩放级别返回 true 或 false。
处理完所有城市后,您可以浏览地图并为每个 Pin 键创建一个标记。
在放大状态下,您将拥有一个地图,其中的列表仅包含一个项目,但我认为这不是什么大问题。
你知道当点击地图上的地点时,yik yak 并没有开始新的 activity。单击新位置时,它会更新其下方的数据。我想你的意思是你想要 refresh/change 当点击 google 地图上的新城市时显示的数据?