栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否要使用GoogleMaps-OnMyLocationChangeListener但无法实现?任何其他选择

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否要使用GoogleMaps-OnMyLocationChangeListener但无法实现?任何其他选择

这是我在示例应用程序中实现 Google Maps的方式

首先将支持库添加到eclipse中,并确保您正在构建的应用程序包含该库。

之后的实现是这样的:

public class MainActivity extends FragmentActivity implements LocationListener,        OnMapClickListener, onMapLongClickListener {    private static final int GPS_ERRORDIALOG_REQUEST = 9001;    GoogleMap map;    List<Address> matches;    TextView tvLocation;    String addressText;    double latitude;    double longitude;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (servicesOK()) { Toast.makeText(this, "Ready to map!!", Toast.LENGTH_LONG).show(); setContentView(R.layout.activity_main); // Getting reference to the SupportMapFragment of activity_main.xml SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()         .findFragmentById(R.id.map); // Getting GoogleMap object from the fragment map = fm.getMap(); // Enabling MyLocation Layer of Google Map map.setMyLocationEnabled(true); // Getting LocationManager object from System Service // LOCATION_SERVICE LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // Creating a criteria object to retrieve provider Criteria criteria = new Criteria(); // Getting the name of the best provider String provider = locationManager.getBestProvider(criteria, true); // Getting Current Location Location location = locationManager.getLastKnownLocation(provider); if (location != null) {     onLocationChanged(location); } locationManager.requestLocationUpdates(provider, 20000, 0, this);        } else { setContentView(R.layout.activity_main);        }    }    @Override    public void onProviderDisabled(String provider) {        // TODO Auto-generated method stub    }    @Override    public void onProviderEnabled(String provider) {        // TODO Auto-generated method stub    }    @Override    public void onStatusChanged(String provider, int status, Bundle extras) {        // TODO Auto-generated method stub    }

对于位置更改:

    @Override    public void onLocationChanged(Location location) {        tvLocation = (TextView) findViewById(R.id.tv_location);        // Getting latitude of the current location        latitude = location.getLatitude();        // Getting longitude of the current location        longitude = location.getLongitude();        // Creating a LatLng object for the current location        LatLng latLng = new LatLng(latitude, longitude);        // Showing the current location in Google Map        map.moveCamera(CameraUpdateFactory.newLatLng(latLng));        // Zoom in the Google Map        map.animateCamera(CameraUpdateFactory.zoomTo(15));        map.addMarker(new MarkerOptions().position(     new LatLng(latitude, longitude)).title(addressText));        map.setonMarkerClickListener(new GoogleMap.onMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) {     Toast.makeText(getbaseContext(), "marker clicked",  Toast.LENGTH_LONG).show();     return false; }        });        // TODO Auto-generated method stub        Geoprer geoCoder = new Geoprer(this);        try { matches = geoCoder.getFromLocation(latitude, longitude, 1);        } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();        }        Address bestMatch = (matches.isEmpty() ? null : matches.get(0));        addressText = String.format("%s, %s, %s", bestMatch     .getMaxAddressLineIndex() > 0 ? bestMatch.getAddressLine(0)     : "", bestMatch.getLocality(), bestMatch.getCountryName());    }    @Override    public void onMapLongClick(LatLng point) {        // TODO Auto-generated method stub    }    @Override    public void onMapClick(LatLng point) {        // TODO Auto-generated method stub    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }

检查服务是否正常,然后继续构建地图

    public boolean servicesOK() {        int isAvailable = GooglePlayServicesUtil     .isGooglePlayServicesAvailable(this);        if (isAvailable == ConnectionResult.SUCCESS) { return true;        } else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) { Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable,         this, GPS_ERRORDIALOG_REQUEST); dialog.show();        } else { Toast.makeText(this, "Cant connect!!", Toast.LENGTH_SHORT).show();        }        return false;    }}

最后,清单:

<permission    android:name="com.mike.maps.permission.MAPS_RECEIVE"    android:protectionLevel="signature" />    <uses-permission android:name="com.example.mapsexample.permission.MAPS_RECEIVE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>    <uses-permission android:name ="android.permission.ACCESS_NETWORK_STATE"/>    <uses-feature        android:glEsVersion="0x00020000"        android:required="true"/>

并在 应用程序标签中

    <meta-data        android:name="com.google.android.maps.v2.API_KEY"        android:value="Your Api" />

希望这能回答您的问题.. :)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号