android – 检查用户是否在使用位置的林中

android – 检查用户是否在使用位置的林中,第1张

概述我想编写一个可以判断用户是否在森林中的应用程序. 有没有办法用 android做到这一点? 我尝试了什么: >使用Google的Places API,并希望每当用户在林中时,都会获得地点类型“natural_feature”.不幸的是,我大部分时间都得到“ZERO_RESULTS” >阅读有关显示森林区域并试图将其置于GoogleMap之上的WMS图层.没有得到它的工作,也注意到我很可能只能显示地 我想编写一个可以判断用户是否在森林中的应用程序.
有没有办法用 android做到这一点?

我尝试了什么:

>使用Google的Places API,并希望每当用户在林中时,都会获得地点类型“natural_feature”.不幸的是,我大部分时间都得到“ZERO_RESulTS”
>阅读有关显示森林区域并试图将其置于GoogleMap之上的WMS图层.没有得到它的工作,也注意到我很可能只能显示地图不检查用户是否在图层的某个区域…

有没有办法检查当前位置是否在谷歌地图上的绿色区域?如果其他一切都失败,这甚至可能就足够了.

提前致谢!

解决方法 我目前不知道是否有更简单的方法来执行此 *** 作,但您可以尝试以下方法:

>从地图中获取快照
>获取快照的平均颜色
>将平均颜色与预定义的森林颜色进行比较
>如果他们的差异低于您接受的公差,那么您就在
地图绿地

如果您没有放大地图并且绿色区域太小,结果可能不准确.在这种情况下,您只能在特定缩放级别上进行计算.

final int forestR = 214;        final int forestG = 233;        final int forestB = 215;        final int tolerance = 60;        button button = (button) findVIEwByID(R.ID.check_forest_btn);        button.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {                    @OverrIDe                    public voID onSnapshotReady(Bitmap snapshot) {                        int pixelCount = 0;                        int redcolors = 0;                        int greencolors = 0;                        int bluecolors = 0;                        for (int y = 0; y < snapshot.getHeight(); y++) {                            for (int x = 0; x < snapshot.getWIDth(); x++) {                                int c = snapshot.getPixel(x,y);                                pixelCount++;                                redcolors += color.red(c);                                greencolors += color.green(c);                                bluecolors += color.blue(c);                            }                        }                        // calculate average of bitmap r,g,b values                        int red = (redcolors / pixelCount);                        int green = (greencolors / pixelCount);                        int blue = (bluecolors / pixelCount);                        int difference = Math.abs(red - forestR) + Math.abs(green - forestG) + Math.abs(blue - forestB);                        boolean isForest = difference < tolerance;//use this to display your information                    }                };                map.snapshot(callback);            }        });
总结

以上是内存溢出为你收集整理的android – 检查用户是否在使用位置的林中全部内容,希望文章能够帮你解决android – 检查用户是否在使用位置的林中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存