【问题标题】:How to get number of random points around one point in iphone maps?如何在iphone地图中获取一个点周围的随机点数?
【发布时间】:2012-12-18 09:04:11
【问题描述】:

我正在开发一个包含地图的 iphone 应用程序。起始屏幕是导航屏幕,用户可以在其中选择位置,比如说佛罗里达。现在,当用户选择 florida 时,我只想从 florida 中选取至少六个随机点(点的纬度和经度,以便我可以添加注释)。

我没有数据库,因此我无法从佛罗里达州的数据库中获取 5 分并放置它们。

有什么想法吗?

谢谢,

【问题讨论】:

    标签: iphone ios map geolocation mkmapview


    【解决方案1】:

    如果您没有任何东西可以告诉您要在其中生成随机点的区域的形状和大小,这将非常困难。 Harikrishnan 为您提供了一个良好的开端,尽管每次将 lat 和 long 增加 0.0001 并不是随机的。在佛罗里达州的坐标处(根据 Google 的数据,北纬 28.0908°,西经 81.9604°)在两个方向上移动 0.0001 仅是14m away,因此您不太可能以这种速度离开佛罗里达。

    您可以通过使用随机数而不是 0.0001 来调整 Harikirshnan 的方法,但您仍然需要知道用户正在查看的区域有多大。当您查看一个州甚至一个城市时,在 14m 范围内获得 5 分并不是什么好事。

    也许您需要更仔细地了解您想要实现的目标。如果这些点不代表地理数据,那么为什么要将它们放在地图上。如果他们这样做并且它们代表整个区域而不是单个点,那么我能想到的最好的方法是根据 Apple 针对用户选择的位置返回的 maprect 生成随机点。 (粗略地说是mapX = random*maprect.size.width + maprect.origin.x)。然后如果你有一个像佛罗里达这样的区域,它的形状不像你的 MKMapView,你需要反向地理编码,看看你选择的点是否真的在佛罗里达内(即将坐标发送给 Apple 并检查地址)。

    或者,您现在可以考虑在地图上显示数据

    【讨论】:

    • 感谢您的建议!
    【解决方案2】:

    试试这个

    NSInteger i;
        double offset=0.0001;
        for(i=1;i<=5;i++){
            double newlatitude=location.coordinate.longitude+offset;
            double newlongitude=location.coordinate.longitude+offset;
            NSLog(@"%f ,%f",newlatitude,newlongitude );
            offset+=0.0001;
        }
    

    【讨论】:

    • 据我所知,最终位置可能会远离佛罗里达州。对于像孟买这样的小地区,这肯定会失败。
    • 编辑了答案。请检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多