google map v3 api

API学习地址

其实google map的api很简单的,这里是学习文档的传送门http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/articles.html

代码的一些实例
可以国际化的google map

<script type="text/javascript"
 src="http://maps.google.com/maps/api/js?sensor=false&language=语言-国家缩写">
</script>

在language后面写上语言国家缩写就可以国际化google map了

Map类
初始化地图的方法:

var myOptions = {
	zoom : 11,
	center : new google.maps.LatLng(30.1234567,120.3456789),
	mapTypeId : google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("mainMapLayer"),myOptions);

1、center是指地图定位的坐标,需要LatLng对象,对象参数就是纬度和经度

2、mapTypeId是类似枚举的东西,详细参考api

3、mainMapLayer是我的地图div对象的id名,这个div要指明高度和宽度要不地图没法初始化

Marker类、InfoWindow类
添加自定义的marker:

var userMarker = new google.maps.Marker( {
		position : new google.maps.LatLng(30,120),
		map : map,
		title : "鼠标悬浮时提示的信息",
		icon : "图片位置字符串"
	});
var yourInfoWindow;
 
(function(userMarker) {
	google.maps.event.addListener(userMarker, 'click', function() {
		if (!yourInfoWindow) {
			yourInfoWindow = new google.maps.InfoWindow( {});
		}
		yourInfoWindow.setContent(userMarker.title);
		yourInfoWindow.open(map, userMarker);
	});
})(userMarker);

1、Marker类是为地图上添加类似小图钉似的提示位置用的东西

2、Marker需要设置坐标和地图对象来初始化

3、同一个Marker对象要重用时使用下面语句重新使用

userMarker.setMap(null);

4、最后是为marker对象添加点击事件,使用的是嵌套写法(用在for循环里更好使)

5、infowindow是弹出的那个大窗体,他的setContent方法是支持html和css代码的,可以放进去div或table设置样式

LatLngBounds类
Map范围自适应

var bounds = new google.maps.LatLngBounds();
bounds.extend(new google.maps.LatLng(30,120));
//为新的结果创建marker
for ( var i in member) {
	bounds.extend(new google.maps.LatLng(member[i][2],member[i][3]));
	var marker = new google.maps.Marker( {
		position : new google.maps.LatLng(member[i][2],	member[i][3]),
		map : map,
		title : "title",
		icon : "imageAddress"
	});
	markers.push(marker);
	//为marker添加infowindow,添加点击事件
	(function(i, marker) {
		google.maps.event.addListener(
			marker,
			'click',
			function() {
				if (!infoawindow) {//单例infowindow
					infoawindow = new google.maps.InfoWindow(
														{});
				}
				infoawindow.open(map, marker);
		});
	})(i, marker);
}
map.fitBounds(bounds);//这句最重要

Geocoder类
提交地址字符串返回经纬度,查询地址功能

var geocoder = new google.maps.Geocoder();
	geocoder.geocode( {
		'address' : "格式可以是不分割的:北京市东城区东直门,或北京市,东城区,东直门"
	}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			myLatLng = results[0].geometry.location;
			//results数组里有很多有用的信息,包括坐标和返回的标准位置信息
		} else {
			alert(interGeoAnalysisFailed);
		}
	});

地图导航服务

var map;	//地图对象	
var mode = google.maps.DirectionsTravelMode.DRIVING;	//谷歌地图路线指引的模式
var directionsDisplay = new google.maps.DirectionsRenderer();	//地图路线显示对象
var directionsService = new google.maps.DirectionsService();	//地图路线服务对象
var directionsVisible = false;	//是否显示路线
directionsDisplay.setMap(null);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));	//将路线导航结果显示到div中	
var request = {origin: findLatLng, destination: marker.position, travelMode: mode, optimizeWaypoints: true, avoidHighways: false,avoidTolls: false};
directionsService.route
(
	request,
	function(response, status)
	{
   		if (status == google.maps.DirectionsStatus.OK)
   		{
       			directionsDisplay.setDirections(response);
   		}
   	}
);
directionsVisible = true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值