请教大家地图的问题?

xinxing130 2010-09-15 10:44:27
比如我给出一个地址名,浙江省宁波市镇海招宝山,我想让地图自动转向某个地址,
当转向某个地址地图必须知道这个地址的经纬度是多少,
必须是要提供地址经纬度给地图还是地图自己算出来的
假如是地图自己算出来的bing地图或google地图 用什么方式计算地址经纬度的
万分感谢~!
...全文
170 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayy 2010-11-25
  • 打赏
  • 举报
回复
通过详细的地址表 省>市>县>乡>村应该可以解决这个问题吧!
幕夜 2010-11-25
  • 打赏
  • 举报
回复
map.aspx?add=地址 下面的代码是接接收地址并解释成经纬度在地图是定位出来


function initialize()
{
if (GBrowserIsCompatible()) {

document.getElementById('map').style.display="block";

var fristName="广西";
//var url=window.location.href;
//fristName=url.split('=')[1];

var url = document.location.href;
var arrStr = url.substring(url.indexOf("?")+1).split("&");
for(var i =0;i<arrStr.length;i++)
{
var loc = arrStr[i].indexOf("add=");

if(loc!=-1)
{
fristName=arrStr[i].replace("add=","").replace("?","");
fristName=fristName.replace(" ","");
}
}

var map = new GMap2(document.getElementById("map_canvas"));
//解释地址
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setMapType(G_NORMAL_MAP);

var address=fristName;
//window.alert(address);
var geocoder = new GClientGeocoder();
if(geocoder)
{
geocoder.getLatLng(
address,
function(point)
{
if (!point)
{
alert("不能解析:"+point);
map.setCenter(new GLatLng(22.818012, 108.365546),8);
}
else
{
//显示地图 point 坐标 12分辨率
document.getElementById('map').style.display="none";
map.setCenter(point,6);
//添加标记
var marker = new GMarker(point);
map.addOverlay(marker);
//GEvent.addListener(marker,"mouseover",function(){
//marker.openInfoWindowHtml(fristName);
//})
}
} );
}
}
}


function initialize()
{
if (GBrowserIsCompatible()) {

document.getElementById('map').style.display="block";

var fristName="广西";
//var url=window.location.href;
//fristName=url.split('=')[1];

var url = document.location.href;
var arrStr = url.substring(url.indexOf("?")+1).split("&");
for(var i =0;i<arrStr.length;i++)
{
var loc = arrStr[i].indexOf("add=");

if(loc!=-1)
{
fristName=arrStr[i].replace("add=","").replace("?","");
fristName=fristName.replace(" ","");
}
}

var map = new GMap2(document.getElementById("map_canvas"));
//解释地址
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setMapType(G_NORMAL_MAP);

var address=fristName;
//window.alert(address);
var geocoder = new GClientGeocoder();
if(geocoder)
{
geocoder.getLatLng(
address,
function(point)
{
if (!point)
{
alert("不能解析:"+point);
map.setCenter(new GLatLng(22.818012, 108.365546),8);
}
else
{
//显示地图 point 坐标 12分辨率
document.getElementById('map').style.display="none";
map.setCenter(point,6);
//添加标记
var marker = new GMarker(point);
map.addOverlay(marker);
//GEvent.addListener(marker,"mouseover",function(){
//marker.openInfoWindowHtml(fristName);
//})
}
} );
}
}
}
ronaltn 2010-11-25
  • 打赏
  • 举报
回复
被抢了……
我写了一个批量获取的方法,在我的博客里。
LZ有兴趣可以看一下
指间、魔法师 2010-11-25
  • 打赏
  • 举报
回复
谷歌地址解析

你可以看源码,里面有JS

其中

if (geocoder) {
geocoder.getLatLng(address, function(point) {
if (!point) {
alert("不能解析: " + address);
} else {
point.lat();//对应地点的维度
point.lng();//对应地点的经度
.....
xinxing130 2010-09-16
  • 打赏
  • 举报
回复
谢谢 我试试
lthaoyue 2010-09-16
  • 打赏
  • 举报
回复
没用过,过来顶一下
村长_乐 2010-09-16
  • 打赏
  • 举报
回复
帮顶吧....
leafsoar 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 xinxing130 的回复:]
比如我给出一个地址名,浙江省宁波市镇海招宝山,我想让地图自动转向某个地址,
当转向某个地址地图必须知道这个地址的经纬度是多少,
必须是要提供地址经纬度给地图还是地图自己算出来的
假如是地图自己算出来的bing地图或google地图 用什么方式计算地址经纬度的
万分感谢~!
[/Quote]
首先由地名,可以得到地址的经纬度,可以放在数据库中,总之这点确定的
其次要根据此经纬度显示相应的图片,度数由你提供,地图服务自动帮你转换成相应的图片URL路径
这里面也是有算法的,总共十几个等级,下一级地图总大小总是上一级的4倍(面积比)。
比如第一级,就只有一张图片,经纬度可以不考虑,第二级,根据经纬度,判断此区域在4(二级边长扩大2倍)张图片的哪一张,然后加载。
比如如下url:
http://mt3.google.cn/vt/lyrs=m@129&hl=zh-CN&gl=cn&src=api&x=211&y=104&z=8&s=G
其中x,y,z这3个参数决定地图的加载位置,分别是经纬度和放大等级
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]

Google Map经纬度值
[/Quote]

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace YourNameSpace
{
/// <summary>
/// a class for latitude and longtitude
/// </summary>
[Serializable]
public class Geo
{
/// <summary>
/// latitude
/// </summary>
private string _latitude = "";

/// <summary>
/// longtitude
/// </summary>
private string _longtitude = "";

/// <summary>
/// default constructor
/// </summary>
public Geo()
{

}

/// <summary>
/// construct geo given latitude and longtitude
/// </summary>
/// <param name="latitude"></param>
/// <param name="longtitude"></param>
public Geo(string latitude, string longtitude)
{
_latitude = latitude;
_longtitude = longtitude;
}

/// <summary>
/// construct geo given name of a place
/// </summary>
/// <param name="location"></param>
public Geo(string location)
{
string output = "csv";
string url = string.Format("http://maps.google.com/maps/geo?q={0}&output={1}", location, output);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
string[] tmpArray = sr.ReadToEnd().Split(',');
_latitude = tmpArray[2];
_longtitude = tmpArray[3];
}
}

/// <summary>
/// get latitude(纬度)
/// </summary>
public string Latitude
{
get { return _latitude; }
set { _latitude = value; }
}

/// <summary>
/// get longtitude(经度)
/// </summary>
public string Longtitude
{
get { return _longtitude; }
set { _longtitude = value; }
}
}
}


可以的
porschev 2010-09-16
  • 打赏
  • 举报
回复
这种定位。。

在google地图上用地方名字可以直接定位。。

不必要去计算经纬度。。。
xinxing130 2010-09-16
  • 打赏
  • 举报
回复
谢谢大家~!
draglonglong 2010-09-16
  • 打赏
  • 举报
回复
帮LZ顶了。。不会!
wwfgu00ing 2010-09-16
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gbk"/>
<title>Google 地图 JavaScript API 示例: 定制图标</title>
<script src="http://ditu.google.cn/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"
type="text/javascript"></script>
<style type=text/css>
ul{
float:left;
}
</style>
<script type="text/javascript">
var map = null;
var geocoder = null;
function showAddress(address, html, level) {
if (geocoder) {
geocoder.getLatLng(address,
function (point) {
if (!point) {
alert("不能解析: " + address);
} else {
map.setCenter(point, level);
var marker = new GMarker(point);
map.clearOverlays();
map.addOverlay(marker);
marker.openInfoWindowHtml(html);
GEvent.addListener(marker, "click",
function () {
marker.openInfoWindowHtml(html);
});
}
});
}
}
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(1111111, 2222222), 8);
var mapControl = new GMapTypeControl();
map.addControl(new GLargeMapControl());
geocoder = new GClientGeocoder();
showAddress("北京", '我老家在这里', 8);
}
}
</script>
</head>
<body onload="initialize()" onunload="GUnload()">
经度:<input type=text id="jd"> 纬度:<input type=text id="wd"><input type=button value="设置指定坐标" onclick="map.setCenter(new GLatLng(document.getElementById('jd').value,document.getElementById('wd').value), 8);">
<div id="map_canvas" style="width: 600px; height: 300px"></div>
fengyuananan 2010-09-16
  • 打赏
  • 举报
回复
没用过,过来顶一下
wuyq11 2010-09-15
  • 打赏
  • 举报
回复
神码浮云 2010-09-15
  • 打赏
  • 举报
回复
有点晕了...

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧