MarkerOptions position()设置值与Android中的Marker getPosition()不同

时间:2014-01-27 08:36:03

标签: android google-maps google-maps-markers

在我的Android应用程序中,我使用 Google Map 指向某些位置。但我标记为 纬度 经度 的值与点击<时所获得的值不同强>标记即可。这是相关代码

import com.google.android.gms.maps.GoogleMap;

public class MyClass extends SupportMapFragment{

    private GoogleMap mMap;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    mMap = getMap();

    myMethod();

    mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {

            LatLng latLng =  marker.getPosition();
            Log.d(TAG, "# latLng.latitude : " + latLng.latitude + " # latLng.longitude : " + latLng.longitude);
            /*
            * Print for the above Log statement is 
            *
            * # latLng.latitude : 45.446733371796135 # latLng.longitude : 6.97720717638731
            *
            */      
        }
    }
    }

    private void myMethod(){
        MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(coords.getDouble(1), coords.getDouble(0)));
        Log.d(TAG, "# latitude : " + coords.getDouble(1) + " # longitude : " + coords.getDouble(0));
        /*
        * Print for the above Log statement is 
        *
        * # latitude : 45.44673337246575 # longitude : 6.977207233013699
        *
        */
    }
}

这些打印值几乎与 相同,但不完全相同 。我能知道为什么吗?因为当我点击特定标记时,我需要获得我正在为地图提供的确切值。如果是因为我如何将值包含在Map中,我应该如何更改它?

1 个答案:

答案 0 :(得分:0)

这听起来像这里的错误:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5353

正如一位评论员所指出的那样,LatLng正在被展平为浮动,当它们再次检索它们时,它们会失去精确度。

我发现将lat / lngs变成字符串并在比较它们之前除去前8个字符之外的所有内容似乎都有效:

            String lat1 = String.valueOf(marker.latitude).substring(0, 8);