JavaScript 谷歌地图demo
2017-11-26 21:59
92 查看
可以实现显示多个点的大头针, 点击显示/切换信息框, 自适应显示地图大小;
官方给的接口地址, 在大陆是不用指望的, 换成了ditu.google.cn; 这里坐标数据写死了, 取数据库数据测试, 有效;
参考官方文档样例写的小demo, 还要继续探索研究啊 : )
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
#map {
height: 800px;
width: 100%;
}
</style>
</head>
<body>
<h3>My Google Maps Demo</h3>
<div id="map"></div>
<script src="http://ditu.google.cn/maps/api/js?&key=你的key"></script>
<script type="text/javascript" src="./jquery-1.8.2.min.js"></script>
<script>
//1.获取所有点的坐标
//2.根据坐标确定地图边界,适应边界生成地图
//3.在地图显示坐标大头针marker
//4.生成infowindow,绑定点击显示详细信息事件
//保存坐标数组
var poi_arr = new Array();
poi_arr[0] = {lat: 39.010695, lng: 88.151546 };
poi_arr[1] = {lat: 39.008236, lng: 88.145581 };
poi_arr[2] = {lat: 39.014379, lng: 88.137911 };
var marker = [],
infowindows = [],
brief_info = [],
contentString = [],
param_lat = [],
param_lng = [];
function initMap() {
//多边形中心点
var bounds2 = new google.maps.LatLngBounds();
var polygonCoords = [];
//遍历坐标确定中心和边界
for(var i=0;i<poi_arr.length;i++){
param_lat.push(poi_arr[i].lat);
param_lng.push(poi_arr[i].lng);
polygonCoords[i] = new google.maps.LatLng(poi_arr[i].lat, poi_arr[i].lng);
}
for (k = 0; k < polygonCoords.length; k++) {
bounds2.extend(polygonCoords[k]);
}
//获得中心点坐标
var map_center = bounds2.getCenter();
//生成地图
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: map_center,
mapTypeId: 'satellite'
});
var bounds = {
north: Math.max.apply(Math, param_lat),
south: Math.min.apply(Math, param_lat),
east: Math.max.apply(Math, param_lng),
west: Math.min.apply(Math, param_lng),
};
// 适应边界显示地图
map.fitBounds(bounds);
//详细信息
var cont_full = '<div id="content">'+
'<p>姓名: 小王</p>'+
'<p>坐标: 52.511467, 13.447179</p>'+
'<p>登录时间: 2017-11-15</p>'+
'<p>状态: 巡检中</p>'+
'<p>任务: 11区供电站巡检</p>'+
'</div>';
//遍历坐标,生成大头针,生成信息
for(var i=0;i<poi_arr.length;++i){
//生成信息框内容
contentString[i] = '<div id="content">'+
'<p>姓名: 小王'+ i +'</p>'+
'</div>';
//生成大头针
marker[i] = new google.maps.Marker({
position: poi_arr[i],
map: map
});
brief_info[i] = new google.maps.InfoWindow({
content: contentString[i],
maxWidth: 200
});
infowindows[i] = new google.maps.InfoWindow({
content: cont_full,
maxWidth: 200
});
//显示姓名信息框
brief_info[i].open(map, marker[i]);
bind_click(i,marker[i]);
}
}
function bind_click(i,ma){
//遍历所有坐标,绑定点击事件
ma.addListener('click', function() {
brief_info[i].close();
infowindows[i].open(map, ma);
});
}
var start = new google.maps.event.addDomListener(window, 'load', initMap);
</script>
</body>
</html>
官方给的接口地址, 在大陆是不用指望的, 换成了ditu.google.cn; 这里坐标数据写死了, 取数据库数据测试, 有效;
参考官方文档样例写的小demo, 还要继续探索研究啊 : )
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
#map {
height: 800px;
width: 100%;
}
</style>
</head>
<body>
<h3>My Google Maps Demo</h3>
<div id="map"></div>
<script src="http://ditu.google.cn/maps/api/js?&key=你的key"></script>
<script type="text/javascript" src="./jquery-1.8.2.min.js"></script>
<script>
//1.获取所有点的坐标
//2.根据坐标确定地图边界,适应边界生成地图
//3.在地图显示坐标大头针marker
//4.生成infowindow,绑定点击显示详细信息事件
//保存坐标数组
var poi_arr = new Array();
poi_arr[0] = {lat: 39.010695, lng: 88.151546 };
poi_arr[1] = {lat: 39.008236, lng: 88.145581 };
poi_arr[2] = {lat: 39.014379, lng: 88.137911 };
var marker = [],
infowindows = [],
brief_info = [],
contentString = [],
param_lat = [],
param_lng = [];
function initMap() {
//多边形中心点
var bounds2 = new google.maps.LatLngBounds();
var polygonCoords = [];
//遍历坐标确定中心和边界
for(var i=0;i<poi_arr.length;i++){
param_lat.push(poi_arr[i].lat);
param_lng.push(poi_arr[i].lng);
polygonCoords[i] = new google.maps.LatLng(poi_arr[i].lat, poi_arr[i].lng);
}
for (k = 0; k < polygonCoords.length; k++) {
bounds2.extend(polygonCoords[k]);
}
//获得中心点坐标
var map_center = bounds2.getCenter();
//生成地图
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: map_center,
mapTypeId: 'satellite'
});
var bounds = {
north: Math.max.apply(Math, param_lat),
south: Math.min.apply(Math, param_lat),
east: Math.max.apply(Math, param_lng),
west: Math.min.apply(Math, param_lng),
};
// 适应边界显示地图
map.fitBounds(bounds);
//详细信息
var cont_full = '<div id="content">'+
'<p>姓名: 小王</p>'+
'<p>坐标: 52.511467, 13.447179</p>'+
'<p>登录时间: 2017-11-15</p>'+
'<p>状态: 巡检中</p>'+
'<p>任务: 11区供电站巡检</p>'+
'</div>';
//遍历坐标,生成大头针,生成信息
for(var i=0;i<poi_arr.length;++i){
//生成信息框内容
contentString[i] = '<div id="content">'+
'<p>姓名: 小王'+ i +'</p>'+
'</div>';
//生成大头针
marker[i] = new google.maps.Marker({
position: poi_arr[i],
map: map
});
brief_info[i] = new google.maps.InfoWindow({
content: contentString[i],
maxWidth: 200
});
infowindows[i] = new google.maps.InfoWindow({
content: cont_full,
maxWidth: 200
});
//显示姓名信息框
brief_info[i].open(map, marker[i]);
bind_click(i,marker[i]);
}
}
function bind_click(i,ma){
//遍历所有坐标,绑定点击事件
ma.addListener('click', function() {
brief_info[i].close();
infowindows[i].open(map, ma);
});
}
var start = new google.maps.event.addDomListener(window, 'load', initMap);
</script>
</body>
</html>
相关文章推荐
- 正则表达式javascript小demo以及笔记
- javascript Demo模态窗口
- JavaScript 组数去重demo
- JavaScript Google IG Drag Demo
- ASP.NET DEMO 10: 如何通过 javascript 访问 GridView/DataGrid 选中 CheckBox 行各列的值
- JavaScript获取时间小demo【计时器】
- One Javascript Demo
- JavaScript 实现简单的倒计时弹窗DEMO附图
- JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
- Highcharts纯Javascript图表使用讲解(附Demo全源码案例)
- javascript 基础 获取元素并创建列表demo 2017-1-10
- js拖拽效果 javascript实现将元素拖拽如某容器效果demo
- JavaScript中in运算符和instanceof运算符demo,java中instanceof用法
- 练手Demo——原生javaScript写日历
- JavaScript_Html5_LocalStorage项目demo
- javascript 之一个简单的画图demo
- JavaScript语法着色引擎(demo及打包文件下载)
- 【jsp】如何插入谷歌地图并获取javascript api 秘钥
- JavaScript-demo
- Silverlight调用JavaScript(Demo)