android动态检索mapsv2上的当前位置

时间:2013-10-16 15:15:11

标签: android google-maps location android-maps-v2

好吧,我有几个与此问题相关的主题,但除了没有人提供明确的解决方案之外,仍然没有得到逻辑。无论如何,我会尝试再次清楚地询问它并提供一个截图(来自一个示例应用程序)希望它能够做到这一点。

如下所示,Google地图上有自定义标记,我可以通过添加Imageview将其实现到我的方案中。在地图的上方有一个TextView。当地图上的标记位置发生变化时,地址会动态变化。但是我们不是拖放标记它固定到中心而不是可拖动。我们正在做的只是平移地图。当我们停止平移时,标记会显示在地图上的某个位置,并在Textview中快速显示为地址。

我可以通过处理onMarkerDragEnd()来更改地址,但这是另一种情况。此外,没有GPS连接,我猜它正在使用screenPosition类将视图Projection转换为纬度和经度。我已经检查了官方网站,但我无法理解如何实现它。

总结一下,如何通过不拖放标记但平移地图来提升TextView中的动态地址变化?

这里也是我的代码也看你如何处理拖动标记结束时拖动方法它显示当前地址参考此代码

@Override
public void onMarkerDragEnd(Marker marker) {
    LatLng position=marker.getPosition();

    String filterAddress = "";
    Geocoder geoCoder = new Geocoder(
            getBaseContext(), Locale.getDefault());
    try {
        List<Address> addresses = geoCoder.getFromLocation(
                position.latitude, 
                position.longitude, 1);

        if (addresses.size() > 0) {
            for (int index = 0; 
            index < addresses.get(0).getMaxAddressLineIndex(); index++)
                filterAddress += addresses.get(0).getAddressLine(index) + " ";
        }
    }catch (IOException ex) {        
        ex.printStackTrace();
    }catch (Exception e2) {
        // TODO: handle exception

        e2.printStackTrace();
    }


    TextView myTextView = (TextView) findViewById(R.id.test);
    myTextView.setText("Address " + filterAddress);




    Log.d(getClass().getSimpleName(), String.format("Dragged to %f:%f",
            position.latitude,
            position.longitude));
}

Here

1 个答案:

答案 0 :(得分:0)

一旦您关注我提供的网址

http://maps.google.com/maps/api/geocode/json?address=mumbai&sensor=false

以json格式返回带有lat / lng地址的数据。

public static void getLatLongFromAddress(String youraddress) {
    String uri = "http://maps.google.com/maps/api/geocode/json?address=" +
                  youraddress + "&sensor=false"
    HttpGet httpGet = new HttpGet(uri);
    HttpClient client = new DefaultHttpClient();
    HttpResponse response;
    StringBuilder stringBuilder = new StringBuilder();

    try {
        response = client.execute(httpGet);
        HttpEntity entity = response.getEntity();
        InputStream stream = entity.getContent();
        int b;
        while ((b = stream.read()) != -1) {
            stringBuilder.append((char) b);
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject = new JSONObject(stringBuilder.toString());

        lng = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
            .getJSONObject("geometry").getJSONObject("location")
            .getDouble("lng");

        lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
            .getJSONObject("geometry").getJSONObject("location")
            .getDouble("lat");

        Log.d("latitude", lat);
        Log.d("longitude", lng);
    } catch (JSONException e) {
        e.printStackTrace();
    }

}