技术开发 频道

使用Android Google Map开发LBS应用

  步骤5 增加各位置点的地图标识

  接下来,我们将在地图上增加若干个地点的经纬度(暂时只是固定编码格式,在实际应用中,应该是从数据库中读取),并用红色的图形标识出来。为了演示方便,在本文中,用硬编码的方式,强制设置用户当前的位置,因此修改setCurrentLocation方法如下:

public void setCurrentLocation(Location location){
    
/* int currLatitude = (int) (location.getLatitude()*1E6);
        
int currLongitude = (int) (location.getLongitude()*1E6);
        currentPoint
= new GeoPoint(currLatitude,currLongitude); */  
  
  
        currentPoint
= new GeoPoint(29647929,-82352486);
        currentLocation
= new Location("");
        currentLocation.setLatitude(currentPoint.getLatitudeE6()
/ 1e6);
        currentLocation.setLongitude(currentPoint.getLongitudeE6()
/ 1e6);
  
        ((TextView)findViewById(R.id.latitudeText)).setText(
"Latitude : " + String.valueOf((int)(currentLocation.getLatitude()*1E6)));
        ((TextView)findViewById(R.id.longitudeText)).setText(
"Longitude : " +  String.valueOf((int)(currentLocation.getLongitude()*1E6)));
        ((TextView)findViewById(R.id.accuracyText)).setText(
"Accuracy : " + String.valueOf(location.getAccuracy()) + " m");
        drawCurrPositionOverlay();
    }

  可以看到,这里我们强制用currentPoint指定了一个经纬度的位置。接下来,在drawMalls()方法中,我们固定假设有6个不同的地理位置点(比如不同的商场位置),然后分别添加到图层中去,如下代码:

public void drawMalls(){
    Drawable marker
= getResources().getDrawable(R.drawable.malls);
    MallOverlay mallsPos
= new MallOverlay(marker,mapView);
        GeoPoint[] mallCoords
= new GeoPoint[6];
  
        
//Load Some Random Coordinates in Miami, FL
        mallCoords[
0] = new GeoPoint(29656582,-82411151);//The Oaks Mall
        mallCoords[
1] = new GeoPoint(29649831,-82376347);//Creekside mall
        mallCoords[
2] = new GeoPoint(29674146,-8238905);//Millhopper Shopping Center
        mallCoords[
3] = new GeoPoint(29675078,-82322617);//Northside Shopping Center
        mallCoords[
4] = new GeoPoint(29677017,-82339761);//Gainesville Mall
        mallCoords[
5] = new GeoPoint(29663835,-82325599);//Gainesville Shopping Center      
  
        List
<Overlay> overlays = mapView.getOverlays();
    OverlayItem overlayItem
= new OverlayItem(mallCoords[0], "The Oaks Mall", "6419 W Newberry Rd, Gainesville, FL 32605");
    mallsPos.addOverlay(overlayItem);
    overlayItem
= new OverlayItem(mallCoords[1], "Creekside Mall", "3501 Southwest 2nd Avenue, Gainesville, FL");
    mallsPos.addOverlay(overlayItem);
    overlayItem
= new OverlayItem(mallCoords[2], "Millhopper Shopping Center", "NW 43rd St & NW 16th Blvd. Gainesville, FL");
    mallsPos.addOverlay(overlayItem);
    overlayItem
= new OverlayItem(mallCoords[3], "Northside Shopping Center", "Gainesville, FL");
    mallsPos.addOverlay(overlayItem);
    overlayItem
= new OverlayItem(mallCoords[4], "Gainesville Mall", "2624 Northwest 13th Street Gainesville, FL 32609-2834");
    mallsPos.addOverlay(overlayItem);
    overlayItem
= new OverlayItem(mallCoords[5], "Gainesville Shopping Center", "1344 N Main St Gainesville, Florida 32601");
    mallsPos.addOverlay(overlayItem);
    overlays.add(mallsPos);  
  
    mallsPos.setCurrentLocation(currentLocation);
}

  在上面的代码中,每生成一个新的地理位置点(overlayItem对象的实例),就将其添加到mallsPos中去(使用mallsPos.addOverlay(overlayItem)方法。最后记得还是要在onCreate方法中加上对drawMalls()方法的调用。

  运行程序后,可以看到如下的结果,其中有5个红色点标出了附近的5个商店的位置,蓝色点的位置表示当前用户的位置。

步骤5 增加各位置点的地图标识
 

0
相关文章