これを行うには簡単に方法があるかどうか私は現在、知りませんが、あなたは次のことを試みることができる:
- マップ
- からスナップショットを取得するスナップショット
- の平均色を取得します。平均色と既定のフォレストカラーを比較してください
- その差が許容誤差よりも小さい場合、 マップの緑色の領域にあります
地図がズームインされておらず、緑色の領域が小さすぎると結果は正確ではないかもしれません。この場合、特定のズームレベルでのみ計算できます。
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);
}
});
可能であれば、ちょっとしたアイデアがあります。Googleマップは「緑色の領域」(私は森がある地図の色を意味します)という森林を持っています。ユーザーの位置でマップの色を調べることはできますか? –
私は間違いなくそれをチェックアウトするでしょう! – MikeB