`
huahua09
  • 浏览: 45573 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

google map的小知识点

 
阅读更多
1.Projection的作用
2.在Google Map上绘制直线的方法

绘制路线的步骤
1.确定路线的其实和终止的经纬度坐标;
2.在起点和终点上绘制图标;
3,将经纬度坐标换算成屏幕上的x轴/y轴
4,在起点和终点之间绘制路线;

Projection的作用
1.将地图上的经纬度坐标转化层层屏幕上的x轴和y轴的坐标
android.graphics.Point toPixels(GeoPoint in,android.graphics.Point out)
2.将x轴和y轴的坐标转换成地图上的经纬度坐标
GeoPoint fromPixels(int x,int y)

main.xml

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


//在MapView之上创建一个图层,需要创建一个类,实现Overlay,并生成该类的对象,然后将该队形加到MapView。getOverlay()
//一个OverlayItem对象就代表了一个在地图上显示的标记
public class FirstOverlay extends ItemizedOverlay<OverlayItem>{
//创建一个List对象,用于持有该图层当中所有的标记对象
private ArrayList<OverlayItem> overlayItems = new ArrayList<OverlayItem>();
private Context context;

//第一个参数用于指定标记所使用的默认图片
public FirstOverlay(Drawable defaultMarker,Context context){
//必须调用父类的构造函数
supper(boundCenterBotton(defaultMarker));
this.context = context;
}

public FirstOverlay(Drawable defaultMarker){
supper(boundCenterBotton(defaultMarker));
}

//用于将生成好的OverlayItem对象添加到List当中
public void addOverlay(OverlayItem overlay){
overlayItems.add(overlay);
populate();
}

//用于创建一个overlayItem对象
@Override
protected OverlayItem createItem(int i){
return overlayItems.get(i);
}

//返回当前的overlay当中所报涵的overlayItem
@Override
public int size(){
return overlayItems.size();
}
//当用户点击标记时,所调用的函数
@Override
public boolean onTap(int index){
OverlayItem item = overlayItems.get(index);
AlterDialog.Builder builder = new AlterDialog.Builder(context);
builder.setTitle(item.getTitle());
builder.setMessage(item.getSnippet());
Dialog dialog = builder.create();
dialog.show();
return true;
}
}



public class MainActivity extends Activity {
    /** Called when the activity is first created. */
private Projection projection;
private List<Overlay> overlays;
private MapController mapContrroller;
private GeoPoint beginGeoPoint;
private GeoPoint endGeoPoint;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //指定起始和终止位置的经纬度
        beginGeoPoint = new GeoPoint(19240000, -99120000);
        endGeoPoint = new GeoPoint(19340000, -99220000);
       
        MapView mapView = (MapView) findViewById(R.id.mapViewId);
        mapView.setBuiltInZoomControls(true);
       
        //mapContrroller对象只要用于对地图进项控制
        mapContrroller = mapView.getController();
        overlays = mapView.getOverlays();
        projection = mapView.getProjection();
       
        overlays.add(new PointOverlay(beginGeoPoint));
        overlays.add(new PointOverlay(endGeoPoint));
        overlays.add(new LineOverlay(beginGeoPoint, endGeoPoint));
       
        //
        mapContrroller.animateTo(beginGeoPoint);
        mapContrroller.setZoom(12);
    }
   
   
    @Override
    protected boolean isRouteDisplayed(){
    return false;
    }
   
    //该类的对象用于在地图上绘制线条
    class LineOverlay extends Overlay {
    private GeoPoint begin;
    private GeoPoint end;
   
    public LineOverlay(){
   
    }
   
    public LineOverlay(GeoPoint begin, GeoPoint end){
    this.begin = begin;
    this.end = end;
    }
   
    public void draw(Canvas canvas,MapView mapv, boolean shadow){
    super.draw(canvas, mapv, shadow);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);
    paint.setStrokeWidth(2);
    Point beginPoint = new Point();
    Point endPoint = new Point();
    Path path = new Path();
    projection.toPixels(beginGeoPoint,beginPoint);
    projection.toPixels(endGeoPoint,endPoint);
    path.moveTo(endPoint.x, endPoint.y);
    path.lineTo(beginPoint.x, beginPoint.y);
    canvas.drawPath(path, paint);
    }
    }
   
    //该类的对象的作用是在地图上绘制图标
    class PointOverlay extends Overlay{
    private GeoPoint geoPoint;
    public PointOverlay(){
   
    }
   
    public PointOverlay(GeoPoint geoPoint){
    this.geoPoint = geoPoint;
    }
   
    public void draw(Canvas canvas,MapView mapv, boolean shadow){
    super.draw(canvas, mapv, shadow);
    Point point = new Point(); 
    projection.toPixels(geoPoint, point);
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    Paint paint = new Paint();
    canvas.drawBitmap(bmp, point.x, point.y-20, paint);
    }
    }
}
分享到:
评论

相关推荐

    ASP.NET页面中使用Google Map

    例如,我想从SQL Server中读取经纬度信息,然后在Google Map中插入一个点。如果熟悉AJAX的话,很快就能得出答案。我们必须用JavaScript调用ASP.NET服务器端函数,利用得到的数据来绘制Google Map。简单吧?其实,...

    在ASP.NET中使用Google Map

    简介 &lt;br&gt;很多人都知道Google Earth(Google Map),其实,Google为我们自己开发应用程序提供了丰富的API,我们只要具备一些JavaScript的知识,就完全可以利用它们。但是,对于我来说,在ASP.NET页面中使用...

    Google map API提供的服务体验演示代码-一个大学API实例

    本文介绍了Google Maps API的相关基础知识,并且通过两个地图应用的实际开发,总结了Google Maps API 中,设置地图属性,添加地标和信息窗口,获取鼠标点击位置的经纬度以及在地图上添加简单图形等几个常用的功能,...

    在ASP.NET中使用Google Maps

    很多人都知道Google Map,其实,Google为我们自己开发应用程序提供了丰富的API,我们只要具备一些JavaScript的知识,就完全可以利用它们。但是,对于我来说,在ASP.NET页面中使用JavaScript来调用Google Map的API有...

    基于OpenStreetMap+PostGIS的地理位置系统.zip

    正是有此类高质量高活跃的公益组织的贡献,使得个人或者一个较小团队也能做出媲美GoogleMap、高德地图之类高质量的GIS系统。 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/125456279

    Google Android开发入门与实战

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的...

    Google.Android开发入门与实战.pdf

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配 以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    android google map

    类似物流系统,如果想学习这方面的知识,这个程序一定能对你有很大帮助

    Google.Android开发入门与实战 pdf + 源码

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    Google.Android开发入门与实战

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配 以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    《Google Android开发入门与实战》 实例代码

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    Google Android开发入门与实战.pdf

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    Google.Android开发入门与实战(含代码)

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配 以了详实的开发情景截图,并将重要的知识点和经验技巧以“小实验”、“小知识”的活泼形式呈现给读者。...

    Google.Hacks.探索和利用全球信息资源的技巧和工具

    而且作为该书的第三版,本书介绍了Google的很多新功能,包括: 1,使用Google聊天工具Google Talk 2,创建定制的Google Map,并且把它添加到自己的站点中 3,擦除搜索路径,保护浏览隐私 4,把Google查询转换为RSS...

    阿里云java短信验证码源码-Full-Stack-Engineer-Study-Map:这个知识库的目的是总结全栈工程师会遇到的知识点。这个

    Full-Stack-Engineer-Study-Map The purpose of this repository is to summarize the knowledge points that full-stack engineers will encounter. This is mainly used to help me find a job. Login Bot ...

Global site tag (gtag.js) - Google Analytics