当前位置: 代码迷 >> Web前端 >> Google Map ApI 的容易运用(二)
  详细解决方案

Google Map ApI 的容易运用(二)

热度:618   发布时间:2012-10-27 10:42:26.0
Google Map ApI 的简单运用(二)

下面的是Google Map地图异步加载 (通过js)和 通过查询获取后台经纬度数据 并且点与点之间用折线链接显示。

参考的是Google Map ApI 官方网址

?

?

这是我的mapSearch.js文件,这中间运用了DWRJQuery。

?

?

$().ready(function(){

?

?

loadScript();

?

?

$('#empNo').val('');

?

?

});

?

?

?

?

?

?

var map;

?

?

var markerOptions;

?

?

?

?

?

function load() {

?

?

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

?

?

if (GBrowserIsCompatible()) {

?

?

// map.addControl(new GSmallMapControl());//却掉了恢复和滑块

?

?

map.addControl(new GLargeMapControl());//大的缩略图控件

?

?

map.addControl(new GMapTypeControl());//地图模式

?

?

map.addControl(new GOverviewMapControl());//右下角缩略图

?

?

//map.addControl(new GScaleControl());//地图比例尺

?

?

map.removeMapType(G_HYBRID_MAP);//去除混合地图模式

?

?

map.enableScrollWheelZoom(); //开启滚轮伸缩效果--鼠标滚轮向前滚放大地图,反之缩小

?

?

//map.setCenter(new GLatLng(39.9693, 116.4170), 13);

?

?

map.setCenter(new GLatLng(31.14,121.29), 13);

?

?

}

?

?

else

?

?

{

?

?

alert('你使用的浏览器不支持 Google Map!');

?

?

}

?

?

}

?

?

//判断输入的工号是否存在

?

?

function checkempNo (){

?

?

var isExist=dbwtool.callDWRSync('MapSearchDWR.checkempNo',[$('#empNo').val()]);

?

?

if(isExist==false){

?

?

alert("该业务员工号不存在存在,请重新输入!");

?

?

$('#empNo').val('');

?

?

}

?

?

}

?

?

?

?

?

//创建有弹出信息框窗口的 Marker

?

?

function createMarker(point, content) {

?

?

var blueIcon = new GIcon(G_DEFAULT_ICON);

?

?

//blueIcon.image = "http://localhost:8080/hs/image/admin/btn_save.gif";//更换Marker图标

?

?

markerOptions = { icon:blueIcon };

?

?

var marker = new GMarker(point,markerOptions);

?

?

var html = content ;

?

?

GEvent.addListener(marker, "click", function() {

?

?

marker.openInfoWindowHtml(html);

?

?

});

?

?

?

?

?

return marker;

?

?

}

?

?

//查询操作

?

?

function doSearch(){

?

?

var empNo=$('#empNo').val();

?

?

if(empNo!=""){

?

?

var o = dbwtool.callDWRBusiness('MapSearchDWR.getLatitudelongitudes',[empNo]);

?

?

load();//作用是在查询第二次,把前一次的加载的标记清掉 归为第一次加载的地图,这样地图不会 重叠

?

?

if(o){

?

?

var points=[];//定义一个 数组大小不确定

?

?

for (var i=0;i<o.length;i++){

?

?

var latitude=parseFloat(o[i].latitude);

?

?

var longitude=parseFloat(o[i].longitude);

?

?

var point=new GLatLng(latitude,longitude);

?

?

points[i]=point;

?

?

var content="客户姓名:"+o[i].customerName+"<br>客户地址:"+o[i].address+"</br>"+"<br>客户电话:"+o[i].phone+"</br>"+"</br>"+"<br>购买数量电话:"+o[i].buyAmount+"</br>";

?

?

var marker = createMarker(point, content);

?

?

map.addOverlay(marker);

?

?

}

?

?

?

?

//var polyline = new GPolyline([points[0],points[1],points[2]], "#ff0000", 8);

?

?

var polyline = new GPolyline(points, "#ff0000", 8);

?

?

map.panTo(points[0]);//这一句很重要,作用是移动地图中心位置

?

?

map.addOverlay(polyline);

?

?

}

?

?

else{

?

?

alert("没有数据!");

?

?

$('#empNo').val('');

?

?

return false;

?

?

}

?

?

}

?

?

else{

?

?

alert("请输入业务员工号!");

?

?

return false;

?

?

}

?

?

}

?

?

//下面该方法是异步夹杂Google Map 注意 两个参数 asynscallback

?

?

function loadScript() {

?

?

var script = document.createElement("script");

?

?

script.type = "text/javascript";

?

?

script.src = "http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAiWserKTZU9nXfUSx4Ei4RRSY6Rp_dtTyQN4GkMrKIoAukNIPFxRDWpNdSMTrO1knJiSNHRXJdBcZSA&async=2&callback=load";

?

?

document.body.appendChild(script);

?

?

}

?

?

?

?

?

我的mapSearch.jsp文件:


?

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

?

?

<%@include file="../common/comtop.jsp"%>

?

?

<%@taglib prefix="s" uri="/struts-tags" %>

?

?

<!DOCTYPE html PUBLIC "-//W<chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</chmetcnv>//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

?

?

<html>

?

?

<head>

?

?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

?

?

<title>地图――地图查询</title>

?

?

<link rel="stylesheet" type="text/css" href="<%=ctxPath%>/themes/default/dtree.css" />

?

?

<link rel="stylesheet" type="text/css" href="<%=ctxPath%>/themes/default/tooltip.css" />

?

?

<script type="text/javascript" src="<%=ctxPath%>/js/common/dbwtool.js"></script>

?

?

<script type="text/javascript" src="<%=ctxPath%>/js/common/dtree_c.js"></script>

?

?

<script type="text/javascript" src="<%=ctxPath%>/js/map/mapSearch.js"></script>

?

?

<script type='text/javascript' src="<%=ctxPath%>/dwr/interface/MapSearchDWR.js"></script>

?

?

<script type='text/javascript' src="<%=ctxPath%>/dwr/engine.js"></script>

?

?

<script type="text/javascript">

?

?

</script>

?

?

</head>

?

?

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

?

?

<div class="titleBar">

?

?

<span style="float: left;">地图-地图查询</span><br/>

?

?

<span style="float: right"></span>

?

?

</div>

?

?

<s:form id="mainForm" name="mainForm" action="mapSearch" namespace="/map" method="post">

?

?

<div class="panel" id="search">

?

?

<table class="panel">

?

?

<thead>

?

?

<tr>

?

?

<td>业务员工号 <input type="text" id="empNo" onblur="checkempNo()" ></td>

?

?

<td><a href="#" onClick="doSearch();return false;"><img src='<%=ctxPath%>/image/admin/btn_search.gif'/>查询</a></td>

?

?

</tr>

?

?

</thead>

?

?

</table>

?

?

</div>

?

?

<div id="map" align="center" style="width: 1300px; height: 350px">

?

?

</div>

?

?

</s:form>

?

?

</body>

?

?

</html>

?

?

  相关解决方案