android - 如何将 LatLng 添加到 NameValuePairs

标签 android

*我创建了异步任务来将一些细节发送到我的网页并进行处理
*我已成功将字符串值发送到我的页面
*但现在的问题是现在我想发送变量 markerPosition 这是 LatLng
的类型 *Eclipse 建议我将其更改为字符串,但我知道这不是解决方案
*有没有其他的方式发送..?

private class sendToWebsite extends AsyncTask<Void, String, String> {

    String reverseString;
    String username,Place,Status;
    LatLng markerPosition;

    public sendToWebsite(String userName, String place_text,
            String status_text, LatLng mPosition) {

        username = userName;
        Place = place_text;
        Status = status_text;
        markerPosition = mPosition;

    }

    @Override
    protected String doInBackground(Void... params) {

        String URL = "url here";

        try {
            HttpClient httpclient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost(URL);

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    1);
            nameValuePairs
                    .add(new BasicNameValuePair("username", userName));
            nameValuePairs.add(new BasicNameValuePair("place", Place));
            nameValuePairs.add(new BasicNameValuePair("status", Status));
            nameValuePairs.add(new BasicNameValuePair("position", markerPosition));

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            ResponseHandler<String> responseHandler = new BasicResponseHandler();

            String response = httpclient.execute(httppost, responseHandler);

            reverseString = response;

        } catch (UnsupportedEncodingException e1) {

            e1.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }

        return reverseString;
    }

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);

        String flag = "success";
        if (result.equals(flag)) {
            Toast.makeText(getBaseContext(), "Success", Toast.LENGTH_LONG)
                    .show();
        }

    }

}

最佳答案

LatLng 是一个对象,不能简单地按原样打包并在 Http 请求中发送。

您需要从 LatLng 中提取纬度和经度,以便通过 Http 请求将其作为字符串发送。例如:

nameValuePairs.add(new BasicNameValuePair("latitude", Double.toString(markerPosition.latitude)));
nameValuePairs.add(new BasicNameValuePair("longitude", Double.toString(markerPosition.longitude)));

在您的后端,将接收到的值转换回 double 值并进行处理。

关于android - 如何将 LatLng 添加到 NameValuePairs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315626/

相关文章:

android - 将蓝牙配对请求通知对话框放在前面以询问 PIN

android - 通过 Android 应用程序连接到 WiFi

Android 操作栏方向更改怪癖 - 调用 tabSeleceted 和 ItemSelected 方法

Android Oreo 8.0 native C++ 崩溃 : invalid pthread_t passed to libc

java - android.Manifest.permission.WRITE_EXTERNAL_STORAGE - 应用程序崩溃

android - android 中的 xml 到 json

android - 当 sharedUserId ="android.uid.system"时 AudioDeviceCallback 失败

java - JSON `date(...)` 到 `java.Util.Date` 使用 `org.json`

android - 如何从Android市场删除.apk文件?

android - FirebaseUI 身份验证在 Android 上崩溃