如何从拍摄的图像中获取纬度和经度——Android
我正在编写代码从图像捕获中检索lat和long。我可以使用camera事件和onActivityResult拍摄图像如何从拍摄的图像中获取纬度和经度——Android,android,android-location,Android,Android Location,我正在编写代码从图像捕获中检索lat和long。我可以使用camera事件和onActivityResult拍摄图像 eprotected void onActivityResult(int requestCode, int resultCode, Intent data) { Uri _uri = null; Cursor cursor = null; try { final int PICK_IMAGE = 1; if (reques
eprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri _uri = null;
Cursor cursor = null;
try {
final int PICK_IMAGE = 1;
if (requestCode == PICK_IMAGE && data != null
&& data.getData() != null) {
_uri = data.getData();
if (_uri != null) {
// User had pick an image.
cursor = getContentResolver()
.query(_uri,
new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
null, null, null);
cursor.moveToFirst();
// Link to the image
final String imageFilePath = cursor.getString(0);
// Toast.makeText(getApplicationContext(), imageFilePath,
// Toast.LENGTH_LONG).show();
imageLocation= imageFilePath;
File imgFile = new File(imageFilePath);
if (imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
captureImage.setImageBitmap(myBitmap);
}
cursor.close();
} else {
// Toast.makeText(getApplicationContext(), getSdCard,
// Toast.LENGTH_LONG).show();
}
}
super.onActivityResult(requestCode, resultCode, data);
} catch (Exception e) {
if (cursor == null || cursor.equals("")) {
String getSdCard = _uri.getPath();
imageLocation= getSdCard;
File imgFile = new File(getSdCard);
if (imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
captureImage.setImageBitmap(myBitmap);
}
}
e.printStackTrace();
}
}
从这幅图中我们可以得到经纬度。我找了一会儿,找不到位置 当您通过移动设备拍摄图像时,它通常只使用拍摄时刻的日期和时间将图像保存到手机上。如果要向图片添加坐标,则必须在捕获过程中使用Android中的LocationManager类。通过此操作,您可以获得捕获图像的长/纬度坐标
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
请注意,如果要使用上述代码段,您必须在Android清单文件中包含下一个权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
阅读此处的更多信息:相机可能会也可能不会捕获图像中的位置数据,这取决于用户的相机应用程序和他们使用的任何设置(您可以禁用地理标记照片,默认情况下,在大多数安卓手机上是禁用的)。如果将任何位置数据附着到图像,则可以使用图像路径或使用
你永远不能保证你会得到任何照片的位置数据。提供商(gps/wifi/cell)可能被禁用,地理标记可能被禁用,即使两者都已启用,手机也可能无法获取足够最近且足够准确的地理点。Monkeyless的建议是正确的,请使用ExiFinInterface。这里的公认答案中有一个工作示例:
从图像中“获取纬度和经度”是什么意思?人们可以使用
LocationManager
获取该信息,但这与位置无关。您的意思是在拍照时获取当前设备的位置吗?我不确定,相机是否使用纬度和经度位置捕获图像。我不熟悉这个话题。你只能通过gps和/或wi-fi获取位置,因此,如果在拍摄照片的地方启用了这些功能,那么你可以通过LocationManager获取lat和long,但是如果你的意思是通过分析该图像来获取lat和long,这应该非常困难,伙计,你想从图像中获取lat lng吗?你的问题是什么意思?谢谢你的推荐。我还有一个问题要问,是否可以务实地打开相机设置。我找了一会儿,找不到合适的指导。你能帮忙吗。如果我想到任何东西,我会把它添加到你的另一个问题中: