C\#바 이 두 지 도 를 사용 하여 좌표 점 설정 및 예제 읽 기
사이트 주소:http://lbsyun.baidu.com/apiconsole/key#/home
사이트 주소:http://lbsyun.baidu.com/jsdemo.htm#c1_3
프로그램 구현 기능:
1.사이트 주 소 를 입력 하면 로 컬 html 파일 을 호출 할 수도 있 고 다른 사이트 에 방문 할 수도 있 습 니 다.
2.좌 표를 입력 하고 좌표 단 추 를 추가 하면 좌 표를 html 파일 에 전송 하여 위도 텍스트 상자 에 표시 할 수 있 습 니 다.
3.포 지 셔 닝 단 추 를 누 르 면 지 도 를 다시 찾 을 수 있 습 니 다.포 지 셔 닝 중심 은 텍스트 상자 안의 경위도 입 니 다.
4.레이 블 점 을 추가 하 는 것 은 텍스트 상자 안의 경 위 를 지도 에 추가 하 는 것 입 니 다.
5.레이 블 버튼 을 삭제 하면 모든 레이 블 점 을 삭제 할 수 있 습 니 다.
6.지 도 를 클릭 하면 텍스트 상자 에 클릭 한 좌표 경 위 를 표시 할 수 있 습 니 다.
7.실시 간 표시 시작 버튼 을 클릭 하여 맵 에서 마 우 스 를 이동 하면 실시 간 경 위 를 획득 할 수 있 습 니 다
최종 도
웹 브 라 우 저 컨트롤 로 지 도 를 보 여 줍 니 다.
VS 프로젝트 를 만 들 고 컨트롤 웹 브 라 우 저 를 추가 하 며.html 파일 을 새로 만 들 고.html 파일 은 바 이 두 API 를 참고 하여 파일 에 기록 합 니 다.
JS 와 상호작용 을 하기 위해 먼저 using System.security.Permissions 를 도입 합 니 다.그리고 namespace 에 두 줄 을 추가 해 야 합 니 다:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
창 에 Load 이벤트,,이것 이 기능 의 주요 점 입 니 다.그리고 창 에서 실행 되 는 코드:
private void Form1_Load(object sender, EventArgs e)
{
try
{
//string str_url = Application.StartupPath + "../HTMLPage1.html";// html , HTMLPage1.html debug
string str_url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";// html , HTMLPage1.html debug
Uri url = new Uri(str_url);
webBrowser1.Url = url; // WebBrowser
webBrowser1.ObjectForScripting = this; //
textBox1.Text = str_url;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
.html 파일
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html{
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
font-family: " ";
}
#allmap {
height: 97%;
width: 100%;
}
#r-result {
width: 100%;
font-size: 14px;
}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= "></script>
<title> </title>
</head>
<body>
<div id="r-result">
<!-- --->
: <input id="longitude" type="text" style="width:100px; margin-right:10px;" />
: <input id="latitude" type="text" style="width:100px; margin-right:10px;" />
<!-- --->
<input type="button" value=" " onclick="theLocation()" />
<input type="button" value=" " onclick="addPoint()" />
<input type="button" value=" " onclick="deletePoint()" />
</div>
<div id="allmap"></div>
<b id="mouselng">0</b>
<b id="mouselat">0</b>
</body>
</html>
<script type="text/javascript">
// API
var map = new BMap.Map("allmap"); // Map
var point = new BMap.Point(120.371, 30.327); //
map.centerAndZoom(point, 17); // ,
//
var marker = new BMap.Marker(point); //
map.addOverlay(marker); //
//
var navigationControl = new BMap.NavigationControl({
//
anchor: BMAP_ANCHOR_TOP_LEFT,
// LARGE
type: BMAP_NAVIGATION_CONTROL_LARGE,
//
enableGeolocation: true
});
map.addControl(navigationControl);
// GPS
function showInfo(e) {
//alert(e.point.lng + ", " + e.point.lat);// GPS
document.getElementById("longitude").innerText = e.point.lng;
document.getElementById("latitude").innerText = e.point.lat;
document.getElementById("mouselng").innerHTML = e.point.lng;
document.getElementById("mouselat").innerHTML = e.point.lat;
}
map.addEventListener("click", showInfo); //
//
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_NORMAL_MAP,
BMAP_HYBRID_MAP
]
}));
var opts = { offset: new BMap.Size(100, 20) }
map.addControl(new BMap.ScaleControl(opts));//
//map.addControl(new BMap.ScaleControl()); //
map.setCurrentCity(" "); // ,MapTypeControl
map.enableScrollWheelZoom(true); //
//
function theLocation() {
if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {
map.clearOverlays();
var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
var marker = new BMap.Marker(new_point); //
map.addOverlay(marker); //
map.panTo(new_point); //
}
}
//
function addPoint() {
if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {
var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
var marker = new BMap.Marker(new_point); //
map.addOverlay(marker); //
}
}
//
function deletePoint() {
// ,
//map.clearOverlays();
// ,
var allOverlay = map.getOverlays();
for (var i = 0; i < allOverlay.length; i++) {
if (allOverlay[i].toString() == "[object Marker]") {
map.removeOverlay(allOverlay[i]);
}
}
////
//if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {
// var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
// var marker = new BMap.Marker(new_point); //
// map.removeOverlay(marker);
//}
}
map.addEventListener("mousemove", GetlngAndlat);
function GetlngAndlat(e) {
if (e.point.lng != null) {
document.getElementById("mouselng").innerHTML = e.point.lng;
document.getElementById("mouselat").innerHTML = e.point.lat;
}
}
</script>
http://lbsyun.baidu.com/jsdemo.htm#c1_3 바 이 두 공식 문 서 는 수요 에 따라 쓸 수 있 는 Demo 를 많이 주 었 다.
Form1.cs 전체 코드
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Permissions;
using System.IO;
namespace map
{
// JS , using System.Security.Permissions;, namespace :
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]// JS
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
//string str_url = Application.StartupPath + "../HTMLPage1.html";// html , HTMLPage1.html debug
string str_url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";// html , HTMLPage1.html debug
Uri url = new Uri(str_url);
webBrowser1.Url = url; // WebBrowser
webBrowser1.ObjectForScripting = this; //
textBox1.Text = str_url;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button1_Click(object sender, EventArgs e)
{
// MapWinForms\bin\Debug
//string url = Application.StartupPath + "\\HTMLPage1.html";
//string url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";
//textBox1.Text = url;
string url = textBox1.Text.ToString();
// js
webBrowser1.ScriptErrorsSuppressed = true;
// HTML
webBrowser1.Navigate(url);
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
string tag_lng = webBrowser1.Document.GetElementById("mouselng").InnerText;
string tag_lat = webBrowser1.Document.GetElementById("mouselat").InnerText;
double dou_lng, dou_lat;
if (double.TryParse(tag_lng, out dou_lng) && double.TryParse(tag_lat, out dou_lat))
{
label2.Text = " :" + dou_lng.ToString("F6") + "," + dou_lat.ToString("F6");// 6
}
}
catch (Exception ee)
{ MessageBox.Show(ee.Message); }
}
private void btnGetLocation_Click(object sender, EventArgs e)
{
if (btnGetLocation.Text == " ")
{
timer1.Enabled = true;
btnGetLocation.Text = " ";
}
else
{
btnGetLocation.Text = " ";
timer1.Enabled = false;
}
}
private void btnGPS_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("longitude").InnerText = textBox_longitude.Text;
webBrowser1.Document.GetElementById("latitude").InnerText = textBox_latitude.Text;
}
}
}
소스 코드 C\#바 이 두 지 도 를 사용 하여 좌표 점 의 설정 을 실현 하고 예 시 를 읽 는 것 에 관 한 이 글 은 여기까지 소개 합 니 다.더 많은 관련 C\#바 이 두 지도 좌표 점 에서 내용 을 읽 으 려 면 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.