gpt4 book ai didi

android - 使用位置检查用户是否在森林中

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:36 25 4
gpt4 key购买 nike

我想编写一个可以判断用户是否在森林中的应用程序。有没有办法使用 android 来做到这一点?

我尝试过的:

  1. 使用 Google 的 Places API 并希望在用户位于森林中时获取地点类型“natural_feature”。不幸的是,大多数时候我得到的是“ZERO_RESULTS”

  2. 了解显示森林区域的 WMS 图层,并尝试将其中一个图层放在 Google map 上。没有让它工作并且还注意到我很可能只能显示 map 而不检查用户是否在图层的某个区域中......

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

提前致谢!

最佳答案

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

  1. 从您的 map 中获取快照
  2. 获取快照的平均颜色
  3. 将平均颜色与您预定义的森林颜色进行比较
  4. 如果它们的差异低于您可接受的公差,那么您处于 map 绿地

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

        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 - 使用位置检查用户是否在森林中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com