`

学习Google Map 第三版

阅读更多

工作中要用到,所以看了下,第三版无需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上测试通过

分享到:
评论
4 楼 vb2005xu 2010-12-13  
你看下API帮助,肯定是传人的参数有问题
3 楼 晒屁屁 2010-12-12  
请问一下,为什么我用GOOGLE MAP API上的例子,出来的地图没有GOOGLE主页上的地图详细,像店铺信息什么的都没有,卫星图也不能正常加载,是不是因为我参数配置有问题?
2 楼 vb2005xu 2010-11-17  
修正一个方法
function clearMapOverlays(){
	for (i in markers) {
		markers[i].setMap(null);
		markers[i] = null ;
	}
	markers.length = 0 ;
}
1 楼 vb2005xu 2010-11-17  
对象虽好,但是仔细看了下,要改的东西竟然还夹杂着iframe里面的内容,日,还是单开写好把

var map = null;
var geocoder = null;
var markers = [] ;

function clearMapOverlays(){
	for (i in markers) markers[i].setMap(null);
	markers = [] ;
}
function createMapMarker(obj){
	var marker = new google.maps.Marker(obj);
	if (marker)
		markers.push(marker);
	return marker ;
}

function initialize() {
	var latLng = new google.maps.LatLng(39.92, 116.46);	
	var mapOptions = {zoom: 4 ,center: latLng ,mapTypeId: google.maps.MapTypeId.ROADMAP} ;		
    map = new google.maps.Map(document.getElementById('map'),mapOptions);    
	geocoder = new google.maps.Geocoder();	
	
	createMapMarker({position:latLng,map:map});
	
	google.maps.event.addListener(map, 'click', function(event){			
		if(event.latLng){
			clearMapOverlays();
			createMapMarker({position:event.latLng,map:map});			
			$("#mapx").val(event.latLng.lat());
			$("#mapy").val(event.latLng.lng());
			$("#mapzoom").val(map.getZoom());
		}
	});
}

function showLocation() {
	clearMapOverlays();
	document.getElementById("divOutput").innerHTML = "搜索中...";
	var address = document.getElementById('address').value;
	geocoder.geocode({address: address}, cb_showLocation);
}

function cb_showLocation(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;					
			createMapMarker({position:latlng,map:map,title:i+1+''});//must string
			var address = results[i].formatted_address; 
			if(i==0){locate(latlng);}
			document.getElementById("divOutput").innerHTML += ( (i+1) + " " + address + " <small>"+latlng.toString()+"</small> <a href=javascript:go("+latlng.lat()+","+latlng.lng()+")>go</a><br />" );
		}
	}
}

function locate(latlng)
{
	geocoder.geocode({latLng: latlng}, function(results,status){
	
		if (status == google.maps.GeocoderStatus.OK)  {
			map.panTo(latlng) ;
			map.setCenter(latlng);
			map.setZoom(14) ;
			
			clearMapOverlays() ;
			createMapMarker({position:latlng,map:map});
			
			$("#mapx").val(latlng.lat());
			$("#mapy").val(latlng.lng());
			$("#mapzoom").val(map.getZoom());		
		}
	});
}
function go(lat,lng)
{
	var latlng = new google.maps.LatLng(lat,lng);
	locate(latlng);
}

$(document).ready(function(){ initialize() ;});

相关推荐

    手机地图-GoogleMap(For S60第三版)

    《手机地图应用:GoogleMap(For S60第三版)深度解析》 手机地图作为现代生活中不可或缺的一部分,为我们的出行提供了极大的便利。GoogleMap作为全球知名的在线地图服务,其手机版在移动设备上同样表现出色,尤其...

    无密钥google map 第三代

    【标题】"无密钥google map 第三代"指的是在不使用特定API密钥的情况下,采用Google Maps API的第三代版本进行地图应用开发的技术。通常,Google Maps API需要开发者注册并获取API密钥,以便追踪和限制使用量,但...

    Google map 谷歌地图 Google地图 V3 第三版

    var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: myLatLng }); } ``` **标记(Markers)与信息窗口(InfoWindows)** 在地图上添加标记是常见的需求,可以通过`google.maps...

    稻歌Google Map截获器V1.1版安装程序

    【标题】"稻歌Google Map截获器V1.1版安装程序"涉及的主要知识点是利用第三方工具获取和处理Google Map的卫星影像数据。这款软件主要用于帮助用户抓取并保存Google Maps上的卫星图像,以便离线查看或者进行特定分析...

    Google Map MarkerCluster使用簡介

    MarkerClusterer.js 是一個第三方 JavaScript 庫,用於實現標記點聚合功能。 在使用 MarkerCluster 時,需要先宣告一個廣域變數 markerCluster,然後在 initMap 函數中創建 MarkerCluster 實例,並將其初始化為一...

    搭建简单的EXT-GWT(GXT)的开发环境(四)ext-gwt(gxt)结合google map第三版开发

    在本篇内容中,我们将探讨如何搭建一个简单的EXT-GWT(GXT)开发环境,并将其与Google Maps API第三版集成。 首先,搭建EXT-GWT开发环境涉及以下步骤: 1. **安装Java Development Kit (JDK)**:EXT-GWT是基于Java...

    精品云计算第三版课程配套PPT课件含习题(55页)第2章 Google云计算第三版原理与应用(四).pptx

    《云计算》第三版课程配套PPT课件详细介绍了云计算的核心概念和技术,特别是针对Google云计算的原理与应用进行了深入探讨。本课程涵盖了多个重要章节,旨在帮助学生和专业人士掌握云计算的基础和高级主题。以下是对...

    GoogleMap&Android

    虽然Google Maps API不直接支持离线地图,但开发者可以利用SQLite数据库或第三方库缓存地图图像,以实现离线模式。 12. **实时交通信息** Google Maps API允许开发者获取实时交通信息,显示道路拥堵情况,这对于...

    google map v3离线地图资源包

    在IT行业中,Google Map V3是Google Maps API的第三大主要版本,专为Web开发者设计,用于在网页上集成和自定义地图功能。这个“google map v3离线地图资源包”显然提供了一种方法,使得用户能够在没有互联网连接的...

    使用google map的API开发的LBS小软

    10. **离线地图**:虽然Google Maps主要依赖网络,但可以通过第三方库实现部分离线功能,如保存特定区域的地图切片。 在文件名为"fzAndroidMap"的压缩包中,可能包含了实现上述功能的示例代码、资源文件和项目结构...

    Google Map api V3 (3.9.12)的离线开发包

    Google Map API V3(3.9.12)是谷歌提供的一个用于在网页上嵌入交互式地图的服务,它是Google Maps JavaScript API的第三个主要版本。这个离线开发包允许开发者在没有网络连接的情况下进行地图应用的开发和测试,这...

    精品云计算第三版课程配套PPT课件含习题(47页)第2章 Google云计算第三版原理与应用(二).pptx

    《云计算(第三版)》是一本深入探讨云计算理论与实践的教材,配套的PPT课件涵盖了多个重要的云计算技术和平台,特别关注了Google云计算的原理与应用。在第二章中,重点讲述了Google云计算的核心组件和服务,包括...

    android移动版GoogleMap

    或者使用第三方库,如Osmdroid,提供更完善的离线地图解决方案。 10. **性能优化** 在处理大量数据或复杂交互时,要注意优化地图性能。例如,使用 clustering 技术对相近的标记进行分组,减少内存消耗;适时地隐藏...

    黑莓全系列 谷歌地图 Google map 4.4.0 下载 -ROM4.6

    5. **下载**:描述中提到的“下载”意味着这个谷歌地图4.4.0的应用程序可以通过某种方式从互联网上获取,可能是通过黑莓应用商店或其他第三方平台。 6. **OS 4.6 文件**:压缩包内的“OS 4.6”文件可能包含与...

    google map 源码

    谷歌地图(Google Map)是一款广泛使用的在线地图服务,由谷歌公司...但需要注意的是,由于谷歌地图的商业性质,其完整源码并不公开,这里提到的"google map 源码"可能是第三方实现或简化版本,用于教学和学习目的。

    谷歌地图API 第三版

    ### 谷歌地图API 第三版 #### 简介 谷歌地图API第三版是专为移动和Web开发者设计的一套工具集,允许开发者在自己的应用或网站中集成谷歌地图的功能。本版本针对英语理解有限的用户提供了中文文档,以便更广泛的...

    Go 学习笔记 第三版

    Go语言的第三版学习笔记中,作者分享了自己的学习经历和对Go语言的理解,并提供了一些关于语言核心和源码剖析的深入讨论。第三版于2014年发布,基于1.3版本的Go语言,并增加了对reflect包的探讨以及对slice的补充。 ...

    Google Map V3 API

    这个API是Google Maps API的第三个主要版本,提供了更多的功能、更好的性能以及更简洁的语法。离线开发文档确保了开发者在没有网络连接的情况下也能查阅相关资料,提高开发效率。 **核心概念与特性** 1. **初始化...

Global site tag (gtag.js) - Google Analytics