当我输入我的地址时,我希望得到一个地方的纬度和经度。我有一个以编程方式创建自定义dailog的活动,这里有地址字段,当我输入我的地址时,我需要获得纬度和经度。下面是我的适配器代码,我试图获取lat和lng详细信息
public void performAction(View v, final Activity activity) {
Context myContext = v.getContext();
PopUpMenu popUpMenu = (PopUpMenu) v.getTag();
String result = popUpMenu.getMenuName();
if (result != null
&& result.equalsIgnoreCase(myContext.getResources().getString(
R.string.addnewplace))) {
AttractionData attractionData = new AttractionData();
createDiloag(attractionData,activity.getResources().getString(R.string.addnewplace));
setgpsLocation();
}
public void setgpsLocation() {
final EditText address = new EditText(this.activity);
String addressText = address.getText().toString();
try {
final StringBuffer myAddress = new StringBuffer();
if(addressText!=null&&!addressText.trim().equals("")){
myAddress.append(addressText);
}
Geocoder gcd = new Geocoder(parentActivity, Locale.getDefault());
List<Address> addresses = gcd.getFromLocationName(addressText, 5);
if (addressList != null && addressList.size() > 0) {
Address location = addressList.get(0);
location.getLatitude();
location.getLongitude();
// int lat = (int) (addressList.get(0).getLatitude() * 1e6);
// int lng = (int) (addressList.get(0).getLongitude() * 1e6);
AttractionData attractionData = new AttractionData();
attractionData.setLatitude(location.getLatitude());
attractionData.setLongitude( location.getLongitude());
} catch (Exception e) {
Log.e(TAG, "Error", e);
}
}
我无法获得lat lng详细信息,感谢任何帮助。
答案 0 :(得分:0)
我认为问题在于以下几行:
final EditText address = new EditText(this.activity);
String addressText = address.getText().toString();
每次addressText
都是一个空字符串,因为您正在创建一个新的EditText,而不是使用现有活动中的那个。
尝试将其替换为:
final EditText address = (EditText)this.activity.findViewById(R.id.your_edit_text_id);
并将your_edit_text_id
替换为布局文件中的ID。
如果您以编程方式创建视图,请为其提供getter。
在您的活动中:
public EditText getAddressEditText() {
return this.mAddressEditText;
}
然后像这样使用它:
final EditText address = this.activity.getAddressEditText();