Google map & GPS 初探

1:第一步就是去http://code.google.com/intl/ja-JP/android/maps-api-signup.html 申请一个KEY,当然 前面要申请密钥啥的。

 

2:建立一个基于GOOGLE API的工程,选择MapActivity 作为自己Activity的基类

3:可以象往常一样,在layout里面进行界面设计,只是map 基础类有些特别:

         <com.google.android.maps.MapView
        android:id="@+id/myMapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:enabled="true"
        android:clickable="true"
        android:apiKey="xx"
        />

 

注:别的控件,如按钮,edicttext 等 都可以象往常一样普通布局,不见得需要象书本推荐的在mapview上进行操作

 

4:在AndroidManifest.xml 加入:

    <uses-library android:name="com.google.android.maps" />

   以及:

     <uses-sdk android:minSdkVersion="3" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>    // gps 定位
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  // 网络定位

 

5: 一些关键代码:

     // Get the Map View’s controller
        mapController = myMapView.getController();

 

   // 使用默认缩放按钮

   myMapView.setBuiltInZoomControls(true);

  

    // Configure the map display options 
        myMapView.setSatellite(true);// 卫星

 

  // 得到当前位置

        String context = Context.LOCATION_SERVICE;
        locationManager = (LocationManager)getSystemService(context);
       //  provider = LocationManager.GPS_PROVIDER;
        Criteria criteria = new Criteria();
         provider = locationManager.getBestProvider(criteria, true);        
        Location location = locationManager.getLastKnownLocation(provider);

 

   //移动地图中心到指定位置(当前位置)

      positionOverlay.setLocation(location);
      Double geoLat = location.getLatitude()*1E6;  // 注意两者单位不同
      Double geoLng = location.getLongitude()*1E6;
      GeoPoint point = new GeoPoint(geoLat.intValue(),
      geoLng.intValue());
      mapController.animateTo(point); 

 

6:   MapView 有一个overlay的概念,你可以添加自己的overlay来进行 绘制。

可以继承overlay,并重载draw函数进行的canvas 进行绘图

通过下面代码来添加这个overlay:

positionOverlay = new MyPositionOverlay();
        List<Overlay> overlays = myMapView.getOverlays();
        overlays.add(positionOverlay);

 

一个特殊的overlay:

   MyLocationOverlay 可以自动定位当前位置并进行标注

   通过MyLocationOverlay.enableCompass / disableCompass 来进行监听位置变化

 

 

 

7: 通过Geocoder 来查询,定位感兴趣位置

   下面的代码是定位到我家,哈哈

 

 

Geocoder fwdGeocoder = new Geocoder(this, Locale.CHINA);
     //String streetAddress = "160 Riverside Drive, New York, New York";
     //String streetAddress = "West Lake, Hang Zhou, Zhe Jiang";
     String streetAddress = "湖墅嘉园,湖墅北路,杭州";
     List<Address> locations = null;
     try {
     locations = fwdGeocoder.getFromLocationName(streetAddress, 10);
     } catch (IOException e) {}
     
     StringBuilder sb = new StringBuilder();
     if (locations.size() > 0) {
   
          Double geoLat = locations.get(0).getLatitude()*1E6;
  Double geoLng = locations.get(0).getLongitude()*1E6;
  GeoPoint point = new GeoPoint(geoLat.intValue(),
  geoLng.intValue());
  mapController.animateTo(point);

}

 

 

 对应google map的intent

 

Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + streetAddress));
             startActivity(myIntent);

 

 

 

 

 

你可能感兴趣的:(android,String,api,service,Google,layout)