高德地图js离线地图 js setMap 如何释放内存

摘要:无论是百度LBS开放平台,还是高德LBS开放平台,其调用量最高的接口,必然是定位,其次就是地址解析了,又称为地理编码。地址解析,就是将地址转换为经纬度。而逆地址解析,就是将经纬度转换为地址。经纬度一般是由专业测绘机构用GPS采集,然后使用国测局接口加密,最后呈现在互联网地图上的。而地址,这里说的是结构化的带街道门牌号的地址,比如&北京市朝阳区阜通东大街6号&,这个地址是由公安局颁发的。而将地址和经纬度一一对应起来,这个就是高德地图做的事情了,也就是地址解析接口的功能了。地址解析功能,实用性强,调用频次高,谷歌API的地址解析接口甚至是收费的!所以,现在有现成免费的接口,大家应该很开心呀。
---------------------------------------------------------------------------
使用高德提供的AMap.Geocoder插件即可实现地址解析,和逆地址解析。
地理编码类是指将地址信息和地理坐标点信息进行相互转化,包括将地址信息转换为地理坐标点的编码和将地理坐标点转换为地址信息的逆地理编码。
1、地理编码
地理编码是将地址信息转换为地理坐标点信息,你可以使用此项功能在指定位置添加一个点或是定位地图上的某个位置。接口为:
geocoder.getLocation("北京市海淀区苏州街");
//加载地理编码插件
mapObj.plugin(["AMap.Geocoder"],function(){
geocoder=new AMap.Geocoder({
radius:1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息
city:"010"//城市,默认:"全国"
//返回地理编码结果
AMap . event . addListener(geocoder, "complete",geocoder_callBack);
geocoder.getLocation("北京市海淀区苏州街");
2、逆地理编码
逆地理编码又称位置描述或地址解析,即从已知的经纬度坐标到对应的地址描述(如省市、街区、楼层、房间等)的转换。接口为:
geocoder.getAddress(lnglatXY);
var lnglatXY=new AMap.LngLat(116..992706);
//加载地理编码插件
mapObj.plugin(["AMap.Geocoder"],function(){
geocoder=new AMap.Geocoder({
radius:1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息
extensions: "all"//返回地址描述以及附近兴趣点和道路信息,默认"base"
//返回地理编码结果
AMap . event . addListener(geocoder, "complete",geocoder_callBack);
//逆地理编码
geocoder.getAddress(lnglatXY);
3、全部源代码
&!DOCTYPE HTML&
&meta http-equiv="Content-Type" content="text/ charset=utf-8"&
&title&地址解析&/title&
&link rel="stylesheet" type="text/css" href="zero.css" /&
&script language="javascript" src="http://webapi.amap.com/maps?v=1.3&key=【您的key】"&&/script&
&body onLoad="mapInit()"&
&div id="iCenter"&&/div&
&div id="iControlbox"&
&input type="text" id="key_11" value="116.51413" /&
&input type="text" id="key_12" value="39.912896" /&
&button onclick="javascript:geocoder2();"&逆地址解析&/button&
&input type="text" id="key_2" value="北京市朝阳区大屯路304号" /&
&button onclick="javascript:geocoder();"&地址解析&/button&
&div id="result"&&/div&
&script language="javascript"&
var marker = [];
var windowsArr = [];
function mapInit () {
mapObj = new AMap.Map('iCenter');
//默认定位:初始化加载地图时,center及level属性缺省,地图默认显示用户所在城市范围
var key_11;
var key_12;
var key_2;
function geocoder2() {
//POI搜索,关键字查询
key_11 = document.getElementById("key_11").
key_12 = document.getElementById("key_12").
var lnglatXY = new AMap.LngLat(key_11,key_12);
//document.getElementById('result').innerHTML = "您输入的是:" + key_1;
//加载地理编码插件
mapObj.plugin(["AMap.Geocoder"], function() {
MGeocoder = new AMap.Geocoder({
radius: 1000,
extensions: "all"
//返回地理编码结果
AMap.event.addListener(MGeocoder, "complete", geocoder_CallBack2);
//逆地理编码
MGeocoder.getAddress(lnglatXY);
var marker = new AMap.Marker({
map:mapObj,
icon: new AMap.Icon({
image: "http://api.amap.com/Public/images/js/mark.png",
size:new AMap.Size(58,30),
imageOffset: new AMap.Pixel(-32, -0)
position: lnglatXY,
offset: new AMap.Pixel(-5,-30)
mapObj.setFitView();
//鼠标划过显示相应点
var marker2;
function onMouseOver (e) {
var coor = e.split(','),
lnglat = new AMap.LngLat(coor[0], coor[1]);
if (!marker2) {
marker2 = new AMap.Marker({
map:mapObj,
icon: "http://webapi.amap.com/images/0.png",
position: lnglat,
offset: new AMap.Pixel(-10, -34)
marker2.setPosition(lnglat);
mapObj.setFitView();
function geocoder_CallBack2(data) { //回调函数
var resultStr = "";
var roadinfo ="";
var poiinfo="";
//返回地址描述
address = data.regeocode.formattedA
//返回周边道路信息
roadinfo +="&table style='width:600px'&";
for(var i=0;i&data.regeocode.roads.i++){
var color = (i % 2 === 0 ? '#fff' : '#eee');
roadinfo += "&tr style='background-color:" + color + "; margin:0; padding:0;'&&td&道路:" + data.regeocode.roads[i].name + "&/td&&td&方向:" + data.regeocode.roads[i].direction + "&/td&&td&距离:" + data.regeocode.roads[i].distance + "米&/td&&/tr&";
roadinfo +="&/table&"
//返回周边兴趣点信息
poiinfo += "&table style='width:600cursor:'&";
for(var j=0;j&data.regeocode.pois.j++){
var color = j % 2 === 0 ? '#fff' : '#eee';
poiinfo += "&tr onmouseover='onMouseOver(\"" + data.regeocode.pois[j].location.toString() + "\")' style='background-color:" + color + "; margin:0; padding:0;'&&td&兴趣点:" + data.regeocode.pois[j].name + "&/td&&td&类型:" + data.regeocode.pois[j].type + "&/td&&td&距离:" + data.regeocode.pois[j].distance + "米&/td&&/tr&";
poiinfo += "&/table&";
//返回结果拼接输出
resultStr = "&div style=\"font-size: 12padding:0px 0 4px 2 border-bottom:1px solid #C1FFC1;\"&"+"&b&地址&/b&:"+ address + "&hr/&&b&周边道路信息&/b&:&br/&" + roadinfo + "&hr/&&b&周边兴趣点信息&/b&:&br/&" + poiinfo +"&/div&";
document.getElementById("result").innerHTML = resultS
function geocoder() {
//地理编码返回结果展示
key_2 = document.getElementById("key_2").
mapObj.plugin(["AMap.Geocoder"], function() {
//加载地理编码插件
MGeocoder = new AMap.Geocoder();
//返回地理编码结果
AMap.event.addListener(MGeocoder, "complete", geocoder_CallBack);
MGeocoder.getLocation(key_2);
//地理编码
//地理编码返回结果展示
function geocoder_CallBack(data){
var resultStr="";
//地理编码结果数组
var geocode = new Array();
geocode = data.
for (var i = 0; i & geocode. i++) {
//拼接输出html
resultStr += "&span style=\"font-size: 12padding:0px 0 4px 2 border-bottom:1px solid #C1FFC1;\"&"+"&b&地址&/b&:"+geocode[i].formattedAddress+""+ "&b&
坐标&/b&:" + geocode[i].location.getLng() +", "+ geocode[i].location.getLat() +""+ "&b&
匹配级别&/b&:" + geocode[i].level +"&/span&";
addmarker(i, geocode[i]);
mapObj.setFitView();
document.getElementById("result").innerHTML = resultS
function addmarker(i, d) {
var lngX = d.location.getLng();
var latY = d.location.getLat();
var markerOption = {
map:mapObj,
icon:"http://webapi.amap.com/images/"+(i+1)+".png",
position:new AMap.LngLat(lngX, latY)
var mar = new AMap.Marker(markerOption);
marker.push(new AMap.LngLat(lngX, latY));
var infoWindow = new AMap.InfoWindow({
content:d.formattedAddress,
autoMove:true,
size:new AMap.Size(150,0),
offset:{x:0,y:-30}
windowsArr.push(infoWindow);
var aa = function(e){infoWindow.open(mapObj,mar.getPosition());};
AMap.event.addListener(mar,"click",aa);
demo地址:
阅读(...) 评论()在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
1.高德的图开发中实现删除功能;2.目前点删除已经实现,点击也可以一次性删除点和线;3.问题:点击删除后发现,点实现的删除但线还在求解决奔溃了...........4.还有个为啥我多边形里面没有透明覆盖物?5.操作顺序见图;
点击按钮清除后:
然后再次点击:
开启了外网:求大佬解决在(管理城市中的 新增城市),地址:这是所有代码:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
clearMap()这个方法可以清除全部覆盖物
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。高德地图Js API的使用
申请JSAPI的开发者key
引入高德地图JavaScript API文件:
&script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值"&&/script&
创建地图容器
在页面body里你想展示地图的地方创建一个div 容器,并指定id标识:
&div id="container"&&/div&
指定容器大小
按照需要设定地图容器的大小,确保大小合适,比如用CSS这样设置它:
#container {width:300 height: 180 }
设定地图的中心点和级别
我们一般需要给地图按需设定中心点和坐标等属性,这里可以通过两种方式,第一种,直接在地图初始化的时候传入相关属性,center属性的值可以使经纬度的二元数组,也可以是AMap.LngLat对象,要求经度值在前,纬度值在后:
var map = new AMap.Map('container',{
center: [116.39,39.9]
也可以在地图初始化过后,任何需要的地方通过方法来改变地图的中心点和级别
var map = new AMap.Map('container');
map.setZoom(10);
map.setCenter([116.39,39.9]);
map基本参数:
地图图层数组,数组可以是图层 中的一个或多个
地图显示的缩放级别,若center与level未赋值,地图初始化默认显示用户所在城市范围
地图中心点坐标值(自V1.3.0起变更为view对象中的center属性)
地图显示的缩放级别范围,在PC上,默认为[3,18],取值范围[3-18];在移动设备上,默认为[3-19],取值范围[3-19]
地图语言类型,可选值:zh_cn:中文简体,en:英文,zh_en:中英文对照
地图默认鼠标样式。参数cursor应符合CSS的cursor属性规范
animateEnable
地图平移过程中是否使用动画(如调用panBy、panTo、setCenter、setZoomAndCenter等函数
是否开启地图热点,默认false 不打开 (自v1.3 新增)
rotateEnable
地图是否可旋转,默认false (自v1.3 新增)
resizeEnable
是否监控地图容器尺寸变化,默认值为false
dragEnable
地图是否可通过鼠标拖拽平移,默认为true。此属性可被setStatus/getStatus 方法控制
zoomEnable
地图是否可缩放,默认值为true。此属性可被setStatus/getStatus 方法控制
doubleClickZoom
地图是否可通过双击鼠标放大地图,默认为true。此属性可被setStatus/getStatus 方法控制
keyboardEnable
地图是否可通过键盘控制,方向键控制地图平移,"+"和"-"可以控制地图的缩放
地图是否使用缓动效果,默认值为true。此属性可被setStatus/getStatus 方法控制
scrollWheel
地图是否可通过鼠标滚轮缩放浏览,默认为true。此属性可被setStatus/getStatus 方法控制
地图在移动终端上是否可通过多点触控缩放浏览地图,默认为true
设置地图样式,支持normal(默认样式)、dark(深色样式)、light(浅色样式)、fresh(osm样式)
设置地图上显示的元素种类,支持bg(地图背景)、point(兴趣点)、road(道路)、building(建筑物)
添加点标记
创建好地图之后,我们就可以在地图上添加点标记了,用来标注任何用户感兴趣的位置和信息,这里使用到了AMap.Marker这个类。
点标记的创建与添加
同地图一样,点标记可以在创建的时候设定位置等属性,如果设定了map属性的话,marker点将被立即添加到地图上:
var marker = new AMap.Marker({
position: [116..989628],
也可以在创建之后按需更改这些属性:
var marker = new AMap.Marker();
marker.setMap(map);
点标记的移除
移除的话,同样使用setMap方法,不传参数或者传入空参数:
marker.setMap();
要显示该marker的地图对象
点标记在地图上显示的位置,默认为地图中心点
位置偏移量,默认值为Pixel(-10,-34)。(0,0)时marker左上角对准position的位置,该属性表示将marker移动多少像素之后,可以使锚点对准position
String/Icon
需在点标记中显示的图标。可以是一个本地图标地址,或者Icon对象。有合法的content内容时,此属性无效
String/Object
点标记显示内容,可以是HTML要素字符串或者HTML DOM对象。content有效时,icon属性将被覆盖
topWhenClick
鼠标点击时marker是否置顶,默认false ,不置顶(自v1.3 新增)
topWhenMouseOver
鼠标移进时marker是否置顶,默认false,不置顶(自v1.3 新增)
设置点标记是否可拖拽移动,默认为false
raiseOnDrag
设置拖拽点标记时是否开启点标记离开地图的效果
指定鼠标悬停时的鼠标样式,自定义cursor,IE仅支持cur/ani/ico格式,Opera不支持自定义cursor
点标记是否可见,默认为true
点标记的叠加顺序。地图上存在多个点标记叠加时,通过该属性使级别较高的点标记在上层显示,默认100
点标记的旋转角度支持IE9及以上版本
autoRotation
是否自动旋转。点标记在使用moveAlong动画时,路径方向若有变化,点标记是否自动调整角度,默认false,IE8以下不支持
点标记的动画效果,默认值:“AMAP_ANIMATION_NONE”。可选值:“AMAP_ANIMATION_NONE”,无动画效果;“AMAP_ANIMATION_DROP”,点标掉落效果;“AMAP_ANIMATION_BOUNCE”,点标弹跳效果
点标记阴影,不设置该属性则点标记无阴影
鼠标滑过点标记时的文字提示,不设置则鼠标滑过点标无文字提示
点标记是否可点击
默认false,true的时候事件可以穿透到地图
MarkerShape
设置Marker的可点击区域,在定义的区域内可触发Marker的鼠标点击事件
用户自定义属性,支持JavaScript API任意数据类型,如Marker的id等
getOffset( )
获取Marker偏移量(自v1.3 新增)
setOffset(offset:Pixel)
设置Marker偏移量(自v1.3 新增)
setAnimation(animate:String )
设置点标记的动画效果
getAnimation( )
获取点标记的动画效果类型
setClickable(clickable:Boolean )
设置点标记是支持鼠标单击事件
getClickable( )
获取点标记是否支持鼠标单击事件
getPosition( )
获取点标记的位置
setPosition(lnglat:LngLat)
设置点标记位置
setAngle(angle:Number)
设置点标记的旋转角度
getAngle()
获取点标记的旋转角度
setzIndex(index:Number)
设置点标记的叠加顺序,默认最先添加的点标记在最底层
setIcon(content:String/Icon)
设置点标记的显示图标
getIcon( )
String /Icon
当点标记未自定义图标时,获取Icon内容
setDraggable(draggable:Boolean)
设置点标记对象是否可拖拽移动
getDraggable( )
获取点标记对象是否可拖拽移动
点标记隐藏
点标记显示
setCursor(Cursor)
设置鼠标悬停时的光标。 参数cur可为CSS标注中的光标样式
setContent(html:String|htmlDOM)
设置点标记显示内容,可以是HTML要素字符串或者HTML DOM对象
getContent( )
获取点标记内容
moveAlong(lnglatlist,speed,f,circlable)
以指定的速度,点标记沿指定的路径移动。参数lnglats为路径坐标串;speed为指定速度,单位:千米/小时;回调函数f中可添加自定义功能;参数loop表明是否循环执行动画,默认为false
moveTo(lnglat,speed,Function)
以给定速度移动点标记到指定位置。参数lnglat为指定位置,必设;speed为指定速度,单位:千米/小时;回调函数f中添加自定义功能
stopMove( )
点标记停止动画
setMap(map:Map)
为Marker指定目标显示地图。当参数值取null时,地图上移除当前Marker:setMap(null)
获取Marker所在地图对象
setTitle(title:String)
鼠标滑过点标时的文字提示
getTitle( )
获取点标记的文字提示
setTop(isTop:Boolean)
地图上有多个marker时,当isTop为true时,marker将显示在最前面;当为false时,marker取消置顶
setShadow(icon:Icon)
为marker设置阴影效果
getShadow( )
获取marker的阴影图标
setShape(shape:MarkerShape)
设置marker的可点击区域
getShape( )
MarkerShape
获取marker的可点击区域
setExtData(ext:Any)
设置用户自定义属性,支持JavaScript API任意数据类型,如Marker的id等
getExtData( )
获取用户自定义属性
添加信息窗体
我们也可以用信息窗体InfoWindow类来向用户展示一些更详细的信息,比如点击一个点标记后,通过信息窗体来展示这个点标记在哪里
信息窗体的创建与设定
信息窗体一样可以在创建的时候设定内容、偏移量、大小等属性,offset是信息窗体的锚点以position为基准位置的像素偏移量,content除了使用字符串的形式外也可以直接设定为某个创建好的DOM节点:
var infowindow = new AMap.InfoWindow({
content: '&h3&高德地图&/h1&&div&高德是中国领先的数字地图内容、导航和位置服务解决方案提供商。&/div&',
offset: new AMap.Pixel(0, -30),
size:new AMap.Size(230,0)
也可以在创建之后按需更改这些属性:
infowindow.setSize(new AMap.Size(150,50));
var contentDiv = document.createElement('div');
contentDiv.innerText='我是信息窗体';
infowindow.setContent(contentDiv);
如何打开信息窗体
我们可以在信息窗体创建之后立即调用其open方法将它显示在需要的位置:
infowindow.open(map,new AMap.LngLat(116..989628));
也可以通过事件监听,在需要的时候才将信息窗体显示出来,比如在marker被单击的时候显示
var clickHandle = AMap.event.addListener(marker, 'click', function() {
infowindow2.open(map, marker.getPosition())
当不再需要点击marker显示信息窗体这个功能的时候,可以通过如下方式移除事件绑定
AMap.event.removeListener(clickHandle);
使用高级信息窗体
除了普通的信息窗体,我们还提供了封装了周边搜索和路线规划功能在内的高级信息窗体,要使用高级信息窗体,首先需要通过plugin方法加载该插件,然后就可以和普通信息窗体一样进行创建和打开了。如果为高级信息窗体制定了panel属性,将在以panel的值为id的div上显示周边搜索或者路线规划的结果,如果需要对高级信息窗体和panel内容的样式进行修改,可以对相应classname的css进行重写:
AMap.plugin('AMap.AdvancedInfoWindow',function(){
var infowindow = new AMap.AdvancedInfoWindow({
content: '&h3 class="title"&高德地图&/h1&'+
'&div class="content"&高德是中国领先的数字地图内容、'+
'导航和位置服务解决方案提供商。&/div&',
offset: new AMap.Pixel(0, -30),
asOrigin:false
infowindow.open(map,new AMap.LngLat(116..989628));
添加工具条和比例尺
高德地图JSAPI提供了大量丰富的功能控件和服务插件,下面我们来给上面做好的地图添加两个常用的控件,工具条和比例尺。
添加控件的时候首先需要加载插件,同时需要多个插件的时候第一个参数可以设定为控件名称的数组
AMap.plugin(['AMap.ToolBar','AMap.Scale'],function(){
创建控件并添加
在回调函数里我们来进行控件的生成和添加:
AMap.plugin(['AMap.ToolBar','AMap.Scale'],function(){
var toolBar = new AMap.ToolBar();
var scale = new AMap.Scale();
map.addControl(toolBar);
map.addControl(scale);
要移除控件的时候调用地图的removeControl方法即可
map.removeControl(toolBar);
高德JS API——改变地图中心点及缩放级别
2017高德地图API WEB开发(key申请,地图搭建)简约教程
web端高德地图javascript API的调用
高德地图多点标记 marker JSAPI
对接高德地图的总结
高德map api用例
高德地图API JS实现获取坐标和回显点标记
没有更多推荐了,求大神指教!!!!!!!关于高德地图api的_javascript吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:163,157贴子:
求大神指教!!!!!!!关于高德地图api的收藏
有一段代码,之前别人用谷歌地图api写的,现在谷歌全面封杀,我想换成高德地图,可是我是个菜鸟,看不懂代码,一楼不割
javascript哪里好?-万和教育部名师执教,通俗易懂,零基础免费入学,学成有就业部直接包就业,学成随时就业一步到位!
代码,我贴着这里,三楼肯定知道答案,如果三楼不知道10楼一定知道/* * MAP FUNCTIONS */var em_maps_loaded =var maps = {};var maps_markers = {};//loads maps script if not already loaded and executes EM maps scriptfunction em_maps_load(){if( !em_maps_loaded ){if ( jQuery(*script#google-maps*).length == 0 && ( typeof google !== *object* || typeof google.maps !== *object* ) ){ var script = document.createElement(&script&);script.type = &text/javascript&;script.id = &google-maps&;var proto = (EM.is_ssl) ? *https:* : *http:*;script.src = proto + *//maps.google.com/maps/api/js?v=3.12&sensor=false&libraries=places&callback=em_maps*;document.body.appendChild(script);}else if( typeof google === *object* && typeof google.maps === *object* && !em_maps_loaded ){em_maps();}else if( jQuery(*script#google-maps*).length & 0 ){jQuery(window).load(function(){ if( !em_maps_loaded ) em_maps(); }); //google isn*t loaded so wait for page to load resources}}}//re-usable function to load global location mapsfunction em_maps_load_locations(el){var el = jQuery(el);var map_id = el.attr(*id*).replace(*em-locations-map-*,**);var em_data = jQuery.parseJSON( el.nextAll(*.em-locations-map-coords*).first().text() );if( em_data == null ){var em_data = jQuery.parseJSON( jQuery(*#em-locations-map-coords-*+map_id).text() );}jQuery.getJSON(document.URL, em_data , function(data){if(data.length & 0){ var myOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP }; maps[map_id] = new google.maps.Map(el[0], myOptions); maps_markers[map_id] = [];
var minLatLngArr = [0,0]; var maxLatLngArr = [0,0];
for (var i = 0; i & data. i++) { if( !(data[i].location_latitude == 0 && data[i].location_longitude == 0) ){var latitude = parseFloat( data[i].location_latitude );var longitude = parseFloat( data[i].location_longitude );var location = new google.maps.LatLng( latitude, longitude );var marker = new google.maps.Marker({
position: location,
map: maps[map_id]});maps_markers[map_id].push(marker);marker.setTitle(data[i].location_name);var myContent = *&div class=&em-map-balloon&&&div id=&em-map-balloon-*+map_id+*& class=&em-map-balloon-content&&*+ data[i].location_balloon +*&/div&&/div&*;em_map_infobox(marker, myContent, maps[map_id]);//Get min and max long/latsminLatLngArr[0] = (latitude & minLatLngArr[0] || i == 0) ? latitude : minLatLngArr[0];minLatLngArr[1] = (longitude & minLatLngArr[1] || i == 0) ? longitude : minLatLngArr[1];maxLatLngArr[0] = (latitude & maxLatLngArr[0] || i == 0) ? latitude : maxLatLngArr[0];maxLatLngArr[1] = (longitude & maxLatLngArr[1] || i == 0) ? longitude : maxLatLngArr[1]; } } // Zoom in to the bounds var minLatLng = new google.maps.LatLng(minLatLngArr[0],minLatLngArr[1]); var maxLatLng = new google.maps.LatLng(maxLatLngArr[0],maxLatLngArr[1]); var bounds = new google.maps.LatLngBounds(minLatLng,maxLatLng); maps[map_id].fitBounds(bounds); //Call a hook if existsjQuery(document).triggerHandler(*em_maps_locations_hook*, [maps[map_id], data, map_id]);}else{el.children().first().html(*No locations found*);jQuery(document).triggerHandler(*em_maps_locations_hook_not_found*, [el]);}});}function em_maps_load_location(el){el = jQuery(el);var map_id = el.attr(*id*).replace(*em-location-map-*,**);em_LatLng = new google.maps.LatLng( jQuery(*#em-location-map-coords-*+map_id+* .lat*).text(), jQuery(*#em-location-map-coords-*+map_id+* .lng*).text());maps[map_id] = new google.maps.Map( document.getElementById(*em-location-map-*+map_id), {
center: em_LatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false});maps_markers[map_id] = new google.maps.Marker({
position: em_LatLng,
map: maps[map_id]});infowindow = new google.maps.InfoWindow({ content: jQuery(*#em-location-map-info-*+map_id+* .em-map-balloon*).get(0) });infowindow.open(maps[map_id],maps_markers[map_id]);maps[map_id].panBy(40,-70);//JS Hook for handling map after instantiation//Example hook, which you can add elsewhere in your theme*s JS - jQuery(document).bind(*em_maps_location_hook*, function(){ alert(*hi*);} );jQuery(document).triggerHandler(*em_maps_location_hook*, [maps[map_id], infowindow, maps_markers[map_id], map_id]);//map resize listenerjQuery(window).on(*resize*, function(e) {google.maps.event.trigger(maps[map_id], &resize&);maps[map_id].setCenter(maps_markers[map_id].getPosition());maps[map_id].panBy(40,-70);});}jQuery(document).bind(*em_search_ajax*, function(e, vars, wrapper){if( em_maps_loaded ){wrapper.find(*.em-location-map*).each( function(index, el){ em_maps_load_location(el); } );wrapper.find(*.em-locations-map*).each( function(index, el){ em_maps_load_locations(el); });}});
//Load single maps (each map is treated as a seperate map).function em_maps() {//Find all the maps on this page and load themjQuery(*.em-location-map*).each( function(index, el){ em_maps_load_location(el); } );jQuery(*.em-locations-map*).each( function(index, el){ em_maps_load_locations(el); } );//Location stuff - only needed if inputs for location existif( jQuery(*select#location-select-id, input#location-address*).length & 0 ){var map,//load map infovar refresh_map_location = function(){var location_latitude = jQuery(*#location-latitude*).val();var location_longitude = jQuery(*#location-longitude*).val();if( !(location_latitude == 0 && location_longitude == 0) ){var position = new google.maps.LatLng(location_latitude, location_longitude); //the location coordsmarker.setPosition(position);var mapTitle = (jQuery(*input#location-name*).length & 0) ? jQuery(*input#location-name*).val():jQuery(*input#title*).val();marker.setTitle( jQuery(*input#location-name input#title, #location-select-id*).first().val() );jQuery(*#em-map*).show();jQuery(*#em-map-404*).hide();google.maps.event.trigger(map, *resize*);map.setCenter(position);map.panBy(40,-55);infoWindow.setContent( *&div id=&location-balloon-content&&&strong&* + mapTitle + *&/strong&&br/&* + jQuery(*#location-address*).val() + *&br/&* + jQuery(*#location-town*).val()+ *&/div&*);infoWindow.open(map, marker);jQuery(document).triggerHandler(*em_maps_location_hook*, [map, infowindow, marker, 0]);} else {
jQuery(*#em-map*).hide();
jQuery(*#em-map-404*).show();}};//Add listeners for changes to addressvar get_map_by_id = function(id){if(jQuery(*#em-map*).length & 0){jQuery.getJSON(document.URL,{ em_ajax_action:*get_location*, id:id }, function(data){if( data.location_latitude!=0 && data.location_longitude!=0 ){loc_latlng = new google.maps.LatLng(data.location_latitude, data.location_longitude);marker.setPosition(loc_latlng);marker.setTitle( data.location_name );marker.setDraggable(false);jQuery(*#em-map*).show();jQuery(*#em-map-404*).hide();map.setCenter(loc_latlng);map.panBy(40,-55);infoWindow.setContent( *&div id=&location-balloon-content&&*+ data.location_balloon +*&/div&*);infoWindow.open(map, marker);google.maps.event.trigger(map, *resize*);jQuery(document).triggerHandler(*em_maps_location_hook*, [map, infowindow, marker, 0]);}else{jQuery(*#em-map*).hide();jQuery(*#em-map-404*).show();}});}};jQuery(*#location-select-id, input#location-id*).change( function(){get_map_by_id(jQuery(this).val());} );jQuery(*#location-name, #location-town, #location-address, #location-state, #location-postcode, #location-country*).change( function(){//build addressvar addresses = [ jQuery(*#location-address*).val(), jQuery(*#location-town*).val(), jQuery(*#location-state*).val(), jQuery(*#location-postcode*).val() ];var address = **;jQuery.each( addresses, function(i, val){if( val != ** ){address = ( address == ** ) ? address+val:address+*, *+}});if( address == ** ){ //in case only name is entered, no addressjQuery(*#em-map*).hide();jQuery(*#em-map-404*).show();}//do country last, as it*s using the text versionif( jQuery(*#location-country option:selected*).val() != 0 ){address = ( address == ** ) ? address+jQuery(*#location-country option:selected*).text():address+*, *+jQuery(*#location-country option:selected*).text();}if( address != ** && jQuery(*#em-map*).length & 0 ){geocoder.geocode( { *address*: address }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {jQuery(*#location-latitude*).val(results[0].geometry.location.lat());jQuery(*#location-longitude*).val(results[0].geometry.location.lng());}
refresh_map_location();});}});//Load mapif(jQuery(*#em-map*).length & 0){var em_LatLng = new google.maps.LatLng(0, 0);map = new google.maps.Map( document.getElementById(*em-map*), {
center: em_LatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false});var marker = new google.maps.Marker({
position: em_LatLng,
draggable: true});infoWindow = new google.maps.InfoWindow({
content: **});var geocoder = new google.maps.Geocoder();google.maps.event.addListener(infoWindow, *domready*, function() { document.getElementById(*location-balloon-content*).parentNode.style.overflow=**; document.getElementById(*location-balloon-content*).parentNode.parentNode.style.overflow=**; });google.maps.event.addListener(marker, *dragend*, function() {var position = marker.getPosition();jQuery(*#location-latitude*).val(position.lat());jQuery(*#location-longitude*).val(position.lng());map.setCenter(position);map.panBy(40,-55);});if( jQuery(*#location-select-id*).length & 0 ){jQuery(*#location-select-id*).trigger(*change*);}else{refresh_map_location();}jQuery(document).triggerHandler(*em_map_loaded*, [map, infowindow, marker]);}//map resize listenerjQuery(window).on(*resize*, function(e) {google.maps.event.trigger(map, &resize&);map.setCenter(marker.getPosition());map.panBy(40,-55);});}em_maps_loaded = //maps have been loadedjQuery(document).triggerHandler(*em_maps_loaded*);}
function em_map_infobox(marker, message, map) {
var iw = new google.maps.InfoWindow({ content: message });
google.maps.event.addListener(marker, *click*, function() {if( infowindow ) infowindow.close();infowindow =
iw.open(map,marker);
为嘛不用百度地图的api,我查了下百度地图提供了迁移的工具。。。
去论坛里面讨论下吧
建议用百度地图,有完整的api介绍,也有菜鸟使用的简单版。_______玩的6怎么玩都没人喷你,玩的不6你怎么玩都是傻逼
API的相关问题有三种咨询求助的解决方式:1、请加入QQ群:、94479572、官方API论坛发帖 3、或者发送邮件到官方邮箱:对应的产品经理应该可以回答亲相应的问题~ 希望你的问题可以尽快解决!
登录百度帐号}

我要回帖

更多关于 手机运行内存扩展器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信