Javascript 使用ASP.NET在谷歌地图上精确定位位置
我试图在谷歌(或必应)地图上精确定位位置,但在这两个方面我都做不到。代码结构在这两个方面相似,我将介绍google maps的尝试: 目标:我有一个对象的链接列表,每个对象都包含纬度和经度,所有这些都必须精确定位 完整ASP:(中继器将显示搜索结果) 相关(大写):Javascript 使用ASP.NET在谷歌地图上精确定位位置,javascript,asp.net,google-maps,geolocation,bing-maps,Javascript,Asp.net,Google Maps,Geolocation,Bing Maps,我试图在谷歌(或必应)地图上精确定位位置,但在这两个方面我都做不到。代码结构在这两个方面相似,我将介绍google maps的尝试: 目标:我有一个对象的链接列表,每个对象都包含纬度和经度,所有这些都必须精确定位 完整ASP:(中继器将显示搜索结果) 相关(大写): var-map=null; 函数初始化(){ 变量映射选项={ 中心:新google.maps.LatLng(40.42,-98.737), 缩放:4, mapTypeId:google.maps.mapTypeId.ROADMA
var-map=null;
函数初始化(){
变量映射选项={
中心:新google.maps.LatLng(40.42,-98.737),
缩放:4,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“地图画布”),
地图选项);
//图钉(25,80);
}
功能推杆(横向、纵向){
警报(纬度+“”+lon);
var mylatng=new google.maps.LatLng(lat,lon);
var marker=new google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
代码隐藏:
当用户单击搜索按钮时激活:
protected void Button1_Click(object sender, EventArgs e)
{
List<Results> rlist = getResults(query);
String Locations = "";
foreach (Results res in rlist)
{
Page.ClientScript.RegisterStartupScript(
GetType(),
"MyKey",
"pushPin("+res.latitude+","+res.longitude+");",
true);
}
this.rptREsults.DataSource = rlist;
this.rptREsults.DataBind();
}
public class Results
{
public string filename { get; set; }
public string asciiname { get; set; }
public string latitude { get; set; }
public string longitude { get; set; }
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
List rlist=getResults(查询);
字符串位置=”;
foreach(结果在rlist中)
{
Page.ClientScript.RegisterStartupScript(
GetType(),
“我的钥匙”,
图钉(“+res.latitude+”,“+res.latitude+”);“,
正确的);
}
this.rptfresults.DataSource=rlist;
this.rptreults.DataBind();
}
公开课成绩
{
公共字符串文件名{get;set;}
公共字符串asciiname{get;set;}
公共字符串纬度{get;set;}
公共字符串经度{get;set;}
}
结果是正确的,确实包含纬度和经度,当我在pushPin方法中放置警报时,只会出现一个警报框,但不会创建精确定位。有没有更好的方法来存储和精确定位纬度和经度列表
当我从另一个javascript方法调用它时,pushPin方法可以工作 我倾向于这样做,这是我在另一个网站上使用的一些代码的简化版本/示例,但应该给你足够的时间让事情正常运行:
var markers = new Array();
var markerLatLongs = new Array();
var sites = // JSON formatted version of your Results object(s)
function initialize() {
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'),
mapOptions);
createMarkers();
}
function createMarkers() {
for (var j = 0; j < sites.length; j++)
{
markerLatLongs[j] = new google.maps.LatLng(sites.latitude ,sites.longitude )
markers[j] = new google.maps.Marker({
position: markerLatLongs[j],
map: map,
title: sites[j].siteName
});
}
}
谢谢你,布卡尼尔!但我认为问题是,当我调用它时,pushPin的map为null。如中所示,当我从代码调用pushPin时,初始化还没有发生。有什么办法可以解决这个问题吗?我在我的答案中添加了一个可能解决你问题的解决方案。我在我的答案中添加了一个可能解决你问题的解决方案。
var markers = new Array();
var markerLatLongs = new Array();
var sites = // JSON formatted version of your Results object(s)
function initialize() {
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'),
mapOptions);
createMarkers();
}
function createMarkers() {
for (var j = 0; j < sites.length; j++)
{
markerLatLongs[j] = new google.maps.LatLng(sites.latitude ,sites.longitude )
markers[j] = new google.maps.Marker({
position: markerLatLongs[j],
map: map,
title: sites[j].siteName
});
}
}
protected void Button1_Click(object sender, EventArgs e)
{
List<Results> rlist = getResults(query);
String Locations = "";
StringBuilder pushPinCalls = new StringBuilder();
foreach (Results res in rlist)
{
pushPinCalls.AppendFormat("pushPin({0},{1});",res.latitude,res.longitude);
}
Page.ClientScript.RegisterStartupScript(
GetType(),
"MyKey",
string.Format("function pushPinManager() {{0}}",pushPinCalls.ToString());,
true);
this.rptREsults.DataSource = rlist;
this.rptREsults.DataBind();
}
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(40.42, -98.737),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
pushPinManager();
}