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