Googlemap API开发

 

最近接手公司开发WebGIS的任务(也就是所谓的网上查车系统)。所有的东西都要重新开始弄,包括地图文件的转换和配图等等。才刚刚开工,就问我进展如何。如果说只做这一个项目还好,中间还要插进来N个任务。他娘的,手头上的大项目还没完成,还要接一些小客户无关紧要的需求。发完牢骚之后,下面是我用googlemap api的一些体会。

       Googlemap api有三个版本一个是javascript写的api版本,一个是javascript写的类版本,还有一个是flex版本。用javascript写的程序,只要用浏览器浏览,js代码就被下载到本地了,辛辛苦苦写的程序就这样公开了。Flex版本的api编译之后就是一个flash文件,代码安全性比较高。由于javacript版比较简单,这里就介绍一些常用的函数。主要介绍flex版本的环境搭建以及一些常见的用法。   

(一)   JavaScript版本的API经常使用的函数

/*html网页文件*/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title> googlemapapi实例</title>

    <script src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAUbR6g0RGGvD3wc8nEOCNZhQ1-r6OYR-mHk-jCzYLxV7O5V1vkBR9GY27V0NNKkh2ASTbqJMDYJeu2A"

    type="text/javascript"></script>

  /* GoogleMapFunctions.js文件*/

    <script src="js/GoogleMapFunctions.js" type="text/javascript"></script>

    <script type="text/javascript">

        function Button1_onclick() {

            DisplayVehicle(113.93372, 22.9932, 270);

            DrawPolyline(113.93372, 22.9932, 112.93372, 23.9932);

        }   

    </script>

</head>

<body onload="Initialize()" onunload="GUnload()">

<div id="map_canvas" style="width: 900px; height: 600px">

</div>

    <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />

</body>

</html>

var map = null;

//初始化googlemap

function Initialize()

{

    if(GBrowserIsCompatible())

    {

        /*

创建googlemap地图对象

map_canvas放置地图的<div>标签。如:<div id= map_canvas></div>

*/

map = new GMap2(document.getElementById("map_canvas"));

        map.setCenter(new GLatLng(22.9932, 113.93372), 7);

        map.addControl(new GLargeMapControl());

        /*添加比例尺控件*/

        map.addControl(new GScaleControl()); 

        /*添加地图类型控件*/

        map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(100,5)));

        /*添加鹰眼控件*/

        map.addControl(new GOverviewMapControl());    

        map.enableContinuousZoom();

        //map.enableGoogleBar();

        map.enableScrollWheelZoom();

        //map.addControl(new GRulerControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(5,5)));  

        var dragObj = map.getDragObject();

        dragObj.setDraggableCursor("url(images/handzoomin.cur)");       

       

    }

}

/*将地图移动到以该经纬度为中心的地方*/

function MoveToPoint(lng, lat)

{

    map.panTo(new GLatLng(lat, lng));

}

/*车辆根据经纬度和方向选择不同的图片在地图分别显示*/

var vehicleMarker = null;

function DisplayVehicle(lng, lat, head)

{

    if (vehicleMarker==null)

    {   

        var vehicleIcon = new GIcon();   

        vehicleIcon.iconAnchor = new GPoint(18, 18);

        if(head==0)

        {

            vehicleIcon.image = "images/east.gif";

        }

        else if(head>0 &&head<90)

        {

            vehicleIcon.image = "images/southeast.gif";

        }

        else if(head==90)

        {

            vehicleIcon.image = "images/south.gif";

        }

        else if(head>90 && head<180)

        {

            vehicleIcon.image = "images/southwest.gif";

        }

        else if(head==180)

        {

            vehicleIcon.image = "images/west.gif";  

        }

        else if(head>180 && head<270)

        {

            vehicleIcon.image = "images/northwest.gif"

        }

        else if(head==270)

        {

            vehicleIcon.image = "images/north.gif";

        }

        else

        {

            vehicleIcon.image = "images/northeast.gif";

        }

        // 设置 GMarkerOptions 对象, dragCrossMove:true, draggable:true, autoPan:true

        markerOptions = { icon:vehicleIcon};     

        vehicleMarker = new GMarker(new GLatLng(lat, lng), markerOptions);   

        map.addOverlay(vehicleMarker);

        MoveToPoint(lng, lat);

    }

    else

    {

        if(head==0)

        {

            vehicleMarker.setImage("images/east.gif");

        }

        else if(head>0 && head<90)

        {

            vehicleMarker.setImage("images/southeast.gif");

        }

        else if(head==90)

        {

            vehicleMarker.setImage("images/south.gif");

        }

        else if(head>90 && head<180)

        {

            vehicleMarker.setImage("images/southwest.gif");

        }

        else if(head==180)

        {

            vehicleMarker.setImage("images/west.gif");  

        }

        else if(head>180 && head<270)

        {

            vehicleMarker.setImage("images/northwest.gif"); 

        }

        else if(head==270)

        {

            vehicleMarker.setImage("images/north.gif");

        }

        else

        {

            vehicleMarker.setImage("images/northeast.gif");

        }

        vehicleMarker.setLatLng(new GLatLng(lat, lng));

        MoveToPoint(lng, lat);

    }

}

/*根据两个经纬度在地图上上划线

function DrawPolyline(startLng, startLat, endLng, endLat)

{

    var polyline = new GPolyline([new GLatLng(startLat, startLng), new GLatLng(endLat, endLng)], "#ff0000", 2);

    map.addOverlay(polyline);

}

显示效果如下所示:

(二)   搭建Flex开发平台以及常见的用法

这个将会详细介绍,-------待续。

 

posted @ 2009-11-27 09:27  汉阳城主  阅读(195)  评论(0)    收藏  举报