`
远去的渡口
  • 浏览: 474471 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

利用google map展示酒店所在位置

阅读更多

  公司用到了google maps,定位各个酒店在地图中位置。今天做一个简单的总结,关键是记下不同于Demo级别的在地图上加上几个经纬度图标完事的几个细节的处理。

    值得注意的需求是地图级别的设置,既要在可见区域包含所有的point,又要将地图缩进在最佳视觉状态(用直白的语言描述,地图可见范围内包含所有酒店的位置图标,并且可见地图区域的放大级别是最合适的)。

  开始的时候并没有深入去看google map api,后来才发现

getBoundsZoomLevel(bounds) Number Returns the zoom level at which the given rectangular region fits in the map view. The zoom level is computed for the currently selected map type. If no map type is selected yet, the first on the list of map types is used.

就可以满足这个需求。

 

 显示各酒店在地图中位置,由于酒店数据过多采用分页显示,每页显示10个,所以地图上每次最多只会有10个图标标注各酒店位置。

实现整个功能的逻辑是:

1.创建地图,实例化GMap2。如果仅实现上面的功能,用一个自定义类来实现的话,那么这个map所需的属性有:

mapDiv, (map的contener,一般是一个Div)

map,

bounds,

mapOverlays

 

那么这个类可以这么定义:

UI.Map = Class.create({
	initialize: function(mapid) {
		this.mapDiv = $(mapid);
		this.map = null;
		this.bounds = null;
		this.mapOverlays = new Array();
		},
	addPoint: function(item) {
		var latLon = new GLatLng(item.lat, item.lon);
		var overlay = this._createMarker(latLon, this.map);

		this.map.addOverlay(overlay); 
		this.mapOverlays.push(overlay);
		this.bounds.extend(latLon);
		if(this.mapOverlays.length > 1) {
			this.map.setZoom(this.map.getBoundsZoomLevel(this.bounds));
			this.map.setCenter(this.bounds.getCenter());
		} else {
			this.map.setCenter(latLon);
		}
	},
	clear: function(p) {
		if(this.map == null) {
			this.show();
		}
		this.map.closeInfoWindow();
		this.mapOverlays.each(function(item) {
			this.map.removeOverlay(item);
		}.bind(this));
		this.mapOverlays = new Array();
		this.bounds = new GLatLngBounds();
		this.map.setZoom(12);
	},
	show: function() {
		if (GBrowserIsCompatible()) {
			this.map = new GMap2(this.mapDiv); 
			this.map.setCenter(new GLatLng(0, 0), 12); 
			this.map.addControl(new GSmallZoomControl3D()); 
			this.map.addControl(new GMapTypeControl()); 
			this.map.enableContinuousZoom(); 
		}
	}});

 

 

 

 

2.设置地图中心点(一定要在实例化GMap2后立刻设置一个中心点才可以用,否则地图会很怪异,呵,应该说显示的类似是世界地图蓝色海洋远观图)

3、设置地图的经纬度边界矩形。要用到GLatLngBounds.  google map api reference上面这么描述这个类:

A GLatLngBounds instance represents a rectangle in geographical coordinates, including one that crosses the 180 degrees meridian.

 

GLatLngBounds(sw?, ne?) Constructs a rectangle from the points at its south-west and north-east corners.

4.向地图添加酒店的位置图标,也就是在各酒店的经纬度处创建一个图标。当然,从我们的数据库里可以拿到酒店的经纬度。关键就在这添加各酒店的经纬度的时候,除了将酒店的经纬度加上外,还需要做两件事:一、要重新设置map的中心点,map的中心点获取的方法是GLatLngBounds实例的getCenter()方法。二、要将地图可见区域扩充,用GLatLngBounds实例的extend方法。

extend(latlng) none Enlarges this rectangle such that it contains the given point. In longitude direction, it is enlarged in the smaller of the two possible ways. If both are equal, it is enlarged at the eastern boundary.

 

将酒店所在的经纬度处创建图标则是:

var latLon = new GLatLng(o.lat, o.lon);
					  		var overlay =this.createMarker(latLon, letter,describe,mapurl,Map.map);

					  		Map.map.addOverlay(overlay); 

 

createMarker方法也贴出来:

   
	createMarker:function(point, letter,desc,urlName,map){
		var baseIcon = new GIcon();
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);
		
		var icon=new GIcon(baseIcon);
		 icon.image="/images/en/markers/markers"+letter+".png";
		var marker = new GMarker(point, icon);

		GEvent.addListener(marker, "mouseover", function() {
		   // marker.openInfoWindowHtml(desc);
		    
		  
		    marker.openExtInfoWindow(
		              map, 
		              "custom_info_window_red",
		              desc,
		              {beakOffset: 3}
		            ); 
		   
		    
		});
		return marker;
	},

 

 map效果图:

1
1
分享到:
评论

相关推荐

    基于Google Map API的简单地图

    本文将详细解析如何利用Google Map API实现"基于Google Map API的简单地图"的功能,包括显示用户所在地区、地图操作以及标记地点等核心知识点。 首先,我们要了解Google Map API的基本用法。它是Google提供的...

    android google map实例

    通过请求位置更新,我们可以获取到设备的GPS或网络定位信息,然后在地图上标记出用户所在城市的位置。 "地图模式进行选择"是指Google Maps API提供了多种地图样式,包括卫星图、道路图、地形图等。开发者可以使用`...

    Map谷歌地图下载器

    该软件可以高速下载您所指定的任意经纬度范围的卫星地图,普通地图,地形图,并可将所下载的地图进行无缝拼接,使您可以充分利用谷歌的免费卫星地图资源,享受遨游世界的乐趣。 使用帮助: 第一步 设置下载范围 设置...

    android GoogleMap

    总的来说,Android应用中集成GoogleMap并利用GPS定位需要设置相应的权限,初始化地图,开启位置服务,监听位置更新,并在地图上显示当前位置。这个过程涉及到了Android的权限管理、地图API的使用以及GPS定位技术。...

    Google Map案例

    这个“Google Map案例”是关于如何利用Google Maps API来实现保存和显示地图坐标的实例。接下来,我们将深入探讨相关知识点。 1. **Google Maps API** Google Maps API(Application Programming Interface)是...

    基于Google+Map的地理信息服务研究.pdf

    本文将深入探讨基于Android平台,利用Google Map API开发地理信息服务的相关技术。 1. Android操作系统与GPS Android是一种基于Linux内核的开源操作系统,其开放性是其最大魅力所在,吸引了众多开发者积极参与应用...

    Locate IP Address Lookup Show on Map City by JavaScript.zip

    为了在地图上展示位置,项目可能使用了Google Maps API或其他地图服务提供商,如OpenStreetMap或Bing Maps。这些API提供了JavaScript库,可以嵌入到网页中,创建交互式地图。开发者需要获取API密钥,然后在...

    【Hadoop项目】全国各省市酒店数据的分析与处理

    在这个项目中,我们将深入探讨如何利用Hadoop生态系统对酒店数据进行有效的分析和处理。 首先,Hadoop是一个开源框架,专为分布式存储和计算大规模数据而设计。它基于Google的MapReduce编程模型,通过将大型数据集...

    通过GOOGLE地图对IP进行地址定位

    通过上述知识点的介绍,我们了解了如何利用Google Maps JavaScript API 和 Visual FoxPro 这两种工具实现IP地址的地理位置定位,并在地图上显示出来。这对于开发人员来说是非常实用的技术栈组合,尤其适用于需要地理...

    MyMap:使用GoogleMap的示例

    在Java环境中,我们可以利用Google Maps API来创建自定义的地图应用,这就是"MyMap"项目的核心所在。本文将深入探讨如何使用Google Map API在Java中构建一个地图应用,以及"MyMap"项目的具体实现细节。 首先,我们...

    android基站定位源码

    涉及的关键技术包括Google Android API中的TelephonyManager使用、不同运营商(联通、移动、电信)基站定位的代码差异、通过基站信息获取GPS经纬度的方法以及利用Google Map API定位当前位置的过程。下面将深入解析...

    Google.Hacks.探索和利用全球信息资源的技巧和工具

    而且作为该书的第三版,本书介绍了Google的很多新功能,包括: 1,使用Google聊天工具Google Talk 2,创建定制的Google Map,并且把它添加到自己的站点中 3,擦除搜索路径,保护浏览隐私 4,把Google查询转换为RSS...

    基于android的google地图导航

    在“基于android的google map api 地图导航系统”中,核心知识点包括: 1. **集成Google Maps**:首先,你需要在AndroidManifest.xml文件中添加必要的权限,如INTERNET和ACCESS_FINE_LOCATION,然后在布局文件中...

    Map-Widget:用于显示谷歌地图的 WordPress 小部件

    4. **JavaScript支持**:作为一款基于JavaScript构建的插件,Map-Widget利用了谷歌地图API的强大功能,确保地图的流畅加载和互动性。 5. **Automattic维护**:作为WordPress社区的重要成员,Automattic的接手意味着...

    hhgMapDemo3(点击获取当前地址的具体坐标)

    地图API(Application Programming Interface)是由地图服务提供商,如谷歌地图、高德地图或百度地图等,提供的一套接口,开发者可以利用这些接口在自己的应用程序中集成地图功能。这些接口通常包括定位、路线规划、...

    基于spring boot实现根据经纬度坐标返回所在行政区域

    这个项目可能依赖于第三方的GeoCoding服务,如Google Maps API或OpenStreetMap Nominatim API。它们提供RESTful接口,可以接受经纬度并返回对应的行政区域信息。 2. **Spring Boot整合RESTful API**:Spring Boot...

    Google-MapReduce中文版_1.0.zip

    - Google MapReduce设计时考虑了数据本地性,尽可能让计算在数据所在的节点执行,减少网络传输,提高效率。 7. **JobTracker与TaskTracker**: - JobTracker是MapReduce框架中的中心调度器,负责分配任务和监控...

    goolemapapi

    - **社交媒体**:社交平台通过集成地图功能,让用户分享自己所在的位置,增加互动性。 - **房地产**:房产网站可以集成地图,帮助用户根据地理位置筛选房源。 ### 如何使用Google Maps API 1. **注册并创建项目**...

    google common jar包1.0

    在Android开发中,`google-collections-1.0.jar`可能被用在`Setting`或者`SystemUI`这样的系统组件中,以利用其提供的高效且可靠的工具类。由于Android系统本身基于Java,所以引入这样的工具库能帮助开发者更好地...

    local-map-game:使用谷歌地点的问答游戏

    本项目“local-map-game”正是这样一款利用谷歌地点API(Google Places API)打造的游戏,它将地理位置与知识问答相结合,使玩家能够通过识别家乡的地点来提升对地理知识的掌握。 谷歌地点API是谷歌提供的一项服务...

Global site tag (gtag.js) - Google Analytics