重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
标注地图的方法如下:
成都创新互联公司是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:成都响应式网站建设、成都品牌网站建设、营销型网站。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站建设、网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。
一、环境介绍
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/html; charset=utf-8"
meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no"
title/title
link rel="stylesheet" href=""
style
html, body, #map {
height: 100%; width: 100%; margin: 0; padding: 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=""/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"
divClick the map./div
input type="checkbox" id="geodesic"
label for="geodesic"Geodesic?/label
/div --
/body
/html
这个说简单也简单,百度google都有自己的地图接口,去找一下接口调用说明,里面都有案例。在程序里面调用即可。至于调用后具体的功能则需要查询接口函数。我以前做过google的,百度的实际上也是一样
新建一个文件,写入下面的代码:
!doctype html
html
head
meta name="viewport" content="initial-scale=1.0, user-scalable=no" /
meta http-equiv="Content-Type" content="text/html; charset=gbk" /
titleBaidu Map V1.2/title
script type="text/javascript" src=";services=true"
!-- add baidu map api --
/script
/head
body
div id="container" style="width: 600px; height: 400px;"
/div
/body
/html
script type="text/javascript"
var map = new BMap.Map("container"); // new Map
var point = new BMap.Point(116.397128, 39.916527); // Location, (经度, 纬度)
map.centerAndZoom(point, 15); // show Map
// 添加缩放功能
map.enableScrollWheelZoom();
map.enableKeyboard();
/script
保存到程序exe同一目录下,文件名:map.html
然后BUTTON点击事件:
WebBrowser1.Navigate(Application.StartupPath "\map.html")
这样就可以了
ps:经纬度可以到百度地图官网去获取
或者到: 去生成代码
在picturebox的点击事件(Mouse Up)里面写入获取鼠标当前位置的代码就是了