一、环境介绍
1,最近在与一家地图厂家做地图对接,对方用的是在ArcGIS地图上做的二次开发,给我的API也是官方的API,我需要在他们地图上实现我们自己公司的一些功能(比如说:添加标记,定位中心等功能),因为环境问题,所以目前只能使用官方在线地图demo实现,下面是我整理的如何实现在ArcGIS在线地图上添加标注。
2.地图:ArcGIS官方在线地图,ArcGIS Javascript API版本: 3.9
3.软件截图一(在地图上点击后添加的标注标记,点击标注标记后弹出的详细信息):
二、操作步骤
1.下面是我的代码(点击地图就可以添加一个标注标记,点击标注标记就可以显示详细信息):
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title></title>
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css">
<style>
html, body, #map {
height: 100%width: 100%margin: 0padding: 0
}
#controls {
background: #fff
box-shadow: 0 6px 6px -6px #999
color: #444
font-family: sans-serif
height: auto
left: 1em
padding: 1em
position: absolute
top: 1em
width: auto
z-index: 40
}
#controls div {
padding: 0 0 1em 0
}
</style>
<script src="http://js.arcgis.com/3.9/"></script>
<script>
var map, graphicLayer
//标记数组
var allMarkers = []
require([
"esri/map", "esri/geometry/Circle", "esri/symbols/SimpleFillSymbol",
"esri/graphic", "esri/layers/GraphicsLayer",
"dojo/dom", "dojo/dom-attr", "dojo/domReady!"
], function(
Map, Circle, SimpleFillSymbol,
Grahpic, GraphicsLayer,
dom, domAttr
) {
map = new Map("map", {
basemap: "streets",
center: [120.741, 30.39],
slider: false,
zoom: 2
})
//创建图层
graphicLayer = new GraphicsLayer()
//把图层添加到地图上
map.addLayer(graphicLayer)
map.on("click", function(e) {
addMarker(e.mapPoint.x, e.mapPoint.y)
})
map.showZoomSlider()
})
function addMarker(xx, yy) {
//设置标注的经纬度
//方法一
var pt = new esri.geometry.Point(xx, yy, map.spatialReference)
//方法二
// var pt = new esri.geometry.geographicToWebMercator(new esri.geometry.Point({
//"x": 118.0605760000,
//"y": 36.8424320000,
//"spatialReference": { "wkid": 102113 }
//}))
//设置标注显示的图标
//var symbol = new esri.symbol.SimpleMarkerSymbol()
var symbol1 = new esri.symbol.PictureMarkerSymbol("images/iconA_32.png", 25, 25)
//要在模版中显示的参数
var attr = { "address": "山东省淄博市张店区" }
//创建模版
var infoTemplate = new esri.InfoTemplate("标题", "地址:${address}")
//创建图像
var graphic = new esri.Graphic(pt, symbol1, attr, infoTemplate)
//把图像添加到刚才创建的图层上
graphicLayer.add(graphic)
setMapCenter(xx, yy , 1)
}
function setMapCenter(xx, yy , level) {
var point = new esri.geometry.Point(xx, yy, map.spatialReference)
map.centerAndZoom(point, level)
}
//添加标注
function mapAddOverLay(xx, yy, id, labelname) {
var point = new BMap.Point(xx, yy)
var marker = new BMap.Marker(point)
map.addOverlay(marker)//添加标注
allMarkers.push(marker)//记录覆盖物句柄
if (labelname != "") {
var label = new BMap.Label(labelname, { offset: new BMap.Size(20, -10) })
marker.setLabel(label)//添加Label
}
//添加标注回调
addOverlayCallback(marker, xx, yy, id)
}
</script>
</head>
<body>
<div id="map"></div>
<!--<div id="controls">
<div>Click the map.</div>
<input type="checkbox" id="geodesic">
<label for="geodesic">Geodesic?</label>
</div>-->
</body>
</html>
百度地图新平台上线,可以将您的公司免费标注在地图上,请参照以下几点进行标注:
1、注册登陆,完善个人信息:直接访问http://lbc.baidu.com/注册百度账号,激活并完善个人信息;或通过百度地图主页右上角点击“商户免费标注”完成注册登陆。
2、能查到店铺,可以直接认领:请在地图上方的框中输入您的店铺,如果能够查到您的店铺,请直接认领,认领时需要上传您的证照资质。如果无法查到,请先标注其所在的位置,再进行认领。
3、查不到店铺,先标注,再认领点击“我要标注”,填写商户名称和精确的地址位置,精确到门牌号。点击“标注商户位置”,双击地图,放大地图比例。地图比例越大,标注的准确度越高。需要放到最大层级,即双击鼠标地图不再放大,地图能够清楚显示你所在位置的周边环境为止。参照你周边的地标性建筑,拖拽地图中的红点,标注到你认为最准确的位置,点击确定提交后,在进行认领。
4、提交申请后,需要5-7天的审核期,请耐心等待。
详情请参见网址:http://lbc.baidu.com/static/cms/
打开地图,点击工具箱,选择城市标记。具体的操作方法如下:
1、打开地图APP。
2、选择地图功能区中的工具箱,选择标记功能。
3、点击弹出的工具箱中的标记标志,选择想要进行标记的地点。
4、标记想要的地点后,输入标记地点的名称并点击保存。
地图标注不仅仅只是一个显示位置。它可以显示我们的店铺信息,产品介绍,营业的时间段,有无停车场,店铺收费方式等等。既避免出现接到客户电话询问找不到店铺的问题,还可以节省我们的人工成本,更有效解决出现的问题。