[置顶] 学习Google Map 第三版

16 篇文章 0 订阅
14 篇文章 0 订阅

工作中要用到,所以看了下,第三版无需key,这点很爽...

 

与第二版 很多API均做了改写... 很多方法被移除,边看便用,现在终于改完了... 日

 

// <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
var PhotoMap = function(){
	
	this.map = null ;
	this.geocoder = null ;
	this.initMaker = null ;
	
	this.initialize = function(){
		  
		var latLng = new google.maps.LatLng(39.92, 116.46);
		
		var mapOptions = {
			zoom: 4 ,
			center: latLng ,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		} ;
		
		// 初始化地图对象
		this.map = new google.maps.Map(document.getElementById('map'),mapOptions);
		
		// 初始化标志对象并加到地图上
		this.initMaker = this.createMaker(latLng,this.map,"Here") ;
		
		// 初始化地址查询对象
		this.geocoder = new google.maps.Geocoder();		
		
		// 绑定地图点击事件
		var _this = this ;
		google.maps.event.addListener(this.map, 'click', function(event){
			
			if(event.latLng){
				_this.initMaker.setPosition(event.latLng) ;
				$("#mapx").val(event.latLng.lat());
				$("#mapy").val(event.latLng.lng());
				$("#mapzoom").val(_this.map.getZoom());
				
				console.log("点击位置 [经度: %s ;纬度: %s ;缩放级别: %d]",event.latLng.lat(),event.latLng.lng(),_this.map.getZoom());
			}
		});
		
	} ;
		
	this.createMaker = function(latLng,map,title){
		return new google.maps.Marker({position:latLng,map:map,title:title});
	} ;
	
	var adderssMakers = [] ;
	
	this.createAdderssMakers = function(address){
		this.initMaker.setVisible(false) ;
		this.clearAdderssMakers() ;
		
		var _this = this ;
		this.geocoder.geocode({address: address}, function(results,status){
			console.log(results,status);
			if (status == google.maps.GeocoderStatus.OK)  {
			
				document.getElementById("divOutput").innerHTML = "成功("+results.length+")<br />";
				
				for (var i=0; i<results.length; i++) {
					var latlng = results[i].geometry.location ;
					
					var maker = _this.createMaker(latlng,_this.map,i+1 + '') ;
					
					adderssMakers.push(maker) ;
					
					var address = results[i].formatted_address; // 地址
					if( i == 0 )
					{
						_this.locate(latlng);
					}
					document.getElementById("divOutput").innerHTML += ( (i+1) + " " + address + " <small>"+latlng.toString()+"</small> <a href=javascript:go("+latlng.lat()+","+latlng.lng()+")>go</a><br />" );
				}
			}
		});
		
	};
	
	this.clearAdderssMakers = function(){
		for (i in adderssMakers)
			adderssMakers[i].setMap(null);
		adderssMakers = [] ;
	} ;
	
	this.go = function(lat,lng){
		return this.locate(new google.maps.LatLng(lat,lng)) ;
	} ;
	
	this.locate = function(latlng){
		
		var _this = this ;
		this.geocoder.geocode({latLng: latlng}, function(results,status){
			
			console.log(results,status);
			
			if (status == google.maps.GeocoderStatus.OK)  {
				_this.map.panTo(latlng) ;
				_this.map.setCenter(latlng);
				_this.map.setZoom(14) ;
				
				_this.clearAdderssMakers() ;
				_this.initMaker.setPosition(latlng) ;
				_this.initMaker.setVisible(true) ;
				
				$("#mapx").val(latlng.lat());
				$("#mapy").val(latlng.lng());
				$("#mapzoom").val(_this.map.getZoom());
				
				console.log("点击位置 [经度: %s ;纬度: %s ;缩放级别: %d]",latlng.lat(),latlng.lng(),_this.map.getZoom());
			}
		});
		
	} ;
	
	this.initialize() ;
} ;


var pMap = null ;
$(document).ready(function(){
	pMap = new PhotoMap();
});

function showLocation() {
	document.getElementById("divOutput").innerHTML = "搜索中...";
	var address = document.getElementById('address').value;
	return pMap.createAdderssMakers(address);
}

function go(lat,lng)
{
	return pMap.go(lat,lng);
}

 

FireFox上测试通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值