当前位置: 首页 > 知识库问答 >
问题:

如何在Android中获取地图中的当前位置?

董翰池
2023-03-14

我试图实现当前位置地图应用程序,我正在加载地图碎片,但它需要纬度和经度值来定位地址...如何实现当前位置地图功能...提前感谢..

这是我的地图片段。

public class ContactFragment extends Fragment {
MapView mapView;
GoogleMap googleMap;
private WebView contactWebView;
public ContactFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,     Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_contact, container, false);
    getActivity().setTitle("Contact Us");
    contactWebView = (WebView)view.findViewById(R.id.contact_us);
    contactWebView.setBackgroundColor(0);
    if(Build.VERSION.SDK_INT >= 11){
        contactWebView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }
    contactWebView.getSettings().setBuiltInZoomControls(true);
    AssetManager mgr = getContext().getAssets();
    String filename = null;
    try {
        filename = "contact.html";
        System.out.println("filename : " + filename);
        InputStream in = mgr.open(filename, AssetManager.ACCESS_BUFFER);
        String sHTML = StreamToString(in);
        in.close();
        contactWebView.loadDataWithBaseURL(null, sHTML, "text/html", "utf-8", null);
        //singleContent.setText(Html.fromHtml(sHTML));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mapView = (MapView) view.findViewById(R.id.map);
    mapView.onCreate(savedInstanceState);
    if (mapView != null) {
        googleMap = mapView.getMap();
        googleMap.addMarker(new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))
                .anchor(0.5f, 1.0f)
                .position(new LatLng( 12.895960, 77.559921)));
        googleMap.getUiSettings().setMyLocationButtonEnabled(true);
        if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            MapsInitializer.initialize(this.getActivity());
            LatLng position = new LatLng(12.895960, 77.559921);
            CameraUpdate updatePosition = CameraUpdateFactory.newLatLng(position);

            googleMap.moveCamera(updatePosition);
            //googleMap.animateCamera(updatePosition);

            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(position,16));
            return view;
        }
        googleMap.setMyLocationEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);
        MapsInitializer.initialize(this.getActivity());
        //            LatLngBounds.Builder builder = new LatLngBounds.Builder();
 //            builder.include(new LatLng(12.8909537, 77.5594254));
 //            LatLngBounds bounds = builder.build();
        int padding = 0;
        LatLng position = new LatLng(12.895960, 77.559921);
        CameraUpdate updatePosition = CameraUpdateFactory.newLatLng(position);
        CameraUpdate updateZoom = CameraUpdateFactory.zoomBy(8);
        googleMap.moveCamera(updatePosition);
        googleMap.animateCamera(updateZoom);



    }
    return view;
}
@Override
public void onResume() {
    mapView.onResume();
    super.onResume();
}
@Override
public void onPause() {
    super.onPause();
    mapView.onPause();
}
@Override
public void onDestroy() {
    super.onDestroy();
    mapView.onDestroy();
}
@Override
public void onLowMemory() {
    super.onLowMemory();
    mapView.onLowMemory();
}
public static String StreamToString(InputStream in) throws IOException {
    if(in == null) {
        return "";
    }
    Writer writer = new StringWriter();
    char[] buffer = new char[1024];
    try {
        Reader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
        int n;
        while ((n = reader.read(buffer)) != -1) {
            writer.write(buffer, 0, n);
        }
    } finally {
    }
    return writer.toString();
}



}

共有1个答案

鲁品
2023-03-14
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();
        mMap.setMyLocationEnabled(true);

        if (mMap != null) {


         mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {

       @Override
       public void onMyLocationChange(Location arg0) {
        // TODO Auto-generated method stub

         mMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("It's Me!"));
       }
      });

        }
    }
 类似资料:
  • 问题内容: 我在使用android定位系统的NETWORK提供程序获取当前位置坐标时遇到麻烦。 已经阅读了很多教程,并为我的项目实现了4到5个现有的类,所有这些类都给了我最后的坐标,而不是当前的坐标。 我很确定这个问题是我遗漏的根本问题,但是我无法理解到底是什么。 我现在正在使用的代码: 这是我的主要活动 这是我用于跟踪的课程: 这是我的AndroidManifest.xml 实际上,GPS定位工

  • 问题内容: 在我的应用程序中,我在打开应用程序时获得了当前位置的纬度和经度,但是在关闭应用程序时却没有得到。 我正在使用Service类在应用程序中获取当前位置的纬度和经度。 请告诉我即使关闭应用程序也如何获取当前位置的纬度和经度 问题答案: 几个月前,我创建了GPSTracker库来帮助我获取GPS位置。如果您需要查看GPSTracker> getLocation AndroidManifest

  • 谁能给我建议一种简单快速的方法,只需一次就能得到位置?!

  • 问题内容: 我正在尝试通过GPS功能获取用户的当前位置, 编写了一个实现的简单类 通过一个简单的动作,我正在访问这些经度和纬度值 但是它总是返回0.0作为结果。无法找出问题所在。 问题答案: 您必须在onCreate()返回之后才能触发您的位置更新回调。如果您将经纬度变量初始化为虚拟值,则可能会看到您正在打印这些值。 在onLocationChanged中添加一些日志记录,以便可以看到它已被触发,