Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 谷歌地图上的多个标记_Asp.net_Javascript_Vb.net_Api_Google Maps - Fatal编程技术网

Asp.net 谷歌地图上的多个标记

Asp.net 谷歌地图上的多个标记,asp.net,javascript,vb.net,api,google-maps,Asp.net,Javascript,Vb.net,Api,Google Maps,我添加了一个带有两个标记的谷歌地图(我只是在测试),代码是: function load() { var map = new GMap2(document.getElementById("map")); var marker = new GMarker(new GLatLng(<%=coordinates%>)); var marker2 = new GMarker(new GLatLng(31.977211,35.951729)); var h

我添加了一个带有两个标记的谷歌地图(我只是在测试),代码是:

function load() {

    var map = new GMap2(document.getElementById("map"));


    var marker = new GMarker(new GLatLng(<%=coordinates%>));
    var marker2 = new GMarker(new GLatLng(31.977211,35.951729));
    var html="<%=maptitle%><br/>" +
         "<%=text%>";
    var html2="<img src='simplemap_logo.jpg' width='20' height='20'/> " +
         "<%=maptitle%><br/>" +
         "<%=text%>" + "Alper";
    map.setCenter(new GLatLng(<%=coordinates%>), 5);
    map.setMapType(G_HYBRID_MAP);
    map.addOverlay(marker);
    map.addOverlay(marker2);
    map.addControl(new GLargeMapControl());
    map.addControl(new GScaleControl());
    map.addControl(new GMapTypeControl());


    marker.openInfoWindowHtml(html);
    marker2.openInfoWindowHtml(html2);
    }
函数加载(){
VarMap=新的GMap2(document.getElementById(“map”);
var marker=newgmarker(newglatlng());
var marker2=新的GMarker(新的GLatLng(31.977211,35.951729));
var html=“
”+ ""; var html2=“”+ “
”+ “+”阿尔珀; setCenter(新GLatLng(),5); setMapType(G_HYBRID_map); 添加覆盖图(标记); 地图添加覆盖图(marker2); addControl(新的GlargeMappControl()); addControl(新的GScaleControl()); addControl(新的GMapTypeControl()); marker.openInfoWindowHtml(html); marker2.openInfoWindowHtml(html2); }
问题是,只有一个标记文本显示(带文本的白色三角形),另一个不可见,为什么? 另一件事,我有一个地图表,它像:mapID,mapCoordinates,mapMarkerTitle,mapMarkerText,我可以检索这个表,但我想有一种方法能够将它的所有记录传递给我的javascript,并为我表中的每个地图创建一个标记,我知道这是两个,但有人能建议或帮助我编写代码吗?因为我对javascript:D一无所知

HTML输出为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
    Untitled Page
</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAANgu3GlobW5KtQorgXrnJ_xTHM4EYhrvsce8mdg4KdiCoPfCQKxSOZ_5sjy4O31twg6cxfZqam24TCw"
      type="text/javascript"></script>

    <script type="text/javascript">

     function load() {

    var map = new GMap2(document.getElementById("map"));


    var marker = new GMarker(new GLatLng(32.523251,35.816068));
    var marker2 = new GMarker(new GLatLng(31.977211,35.951729));
    var html="maen<br/>" +
         " maen tamemi";
    var html2="<img src='simplemap_logo.jpg' width='20' height='20'/> " +
         "maen<br/>" +
         " maen tamemi" + "Alper";
    map.setCenter(new GLatLng(32.523251,35.816068), 5);
    map.setMapType(G_HYBRID_MAP);
    map.addOverlay(marker);
    map.addOverlay(marker2);
    map.addControl(new GLargeMapControl());
    map.addControl(new GScaleControl());
    map.addControl(new GMapTypeControl());



    marker2.openInfoWindowHtml(html2);
    marker.openInfoWindowHtml(html);
    }

    //]]>
    </script>

    <script type="text/javascript">

      function pageLoad() {
      }

    </script>

</head>
<body onload = "load()">
    <form name="form1" method="post" action="Xhome.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNDI5NDcxNTY4ZGTjxbb38769ZB2N9Ow9kAzPz2PIqA==" />
</div>

    <div id="map" style="width:400px;height:300px" >

    </div>
    </form>
</body>
</html>

无标题页
函数加载(){
VarMap=新的GMap2(document.getElementById(“map”);
var标记=新GMarker(新GLatLng(32.523251,35.816068));
var marker2=新的GMarker(新的GLatLng(31.977211,35.951729));
var html=“maen
”+ “梅恩·塔梅米”; var html2=“”+ “maen
”+ “梅恩·塔梅米”+“阿尔珀”; 地图设置中心(新格拉特林(32.523251,35.816068),5); setMapType(G_HYBRID_map); 添加覆盖图(标记); 地图添加覆盖图(marker2); addControl(新的GlargeMappControl()); addControl(新的GScaleControl()); addControl(新的GMapTypeControl()); marker2.openInfoWindowHtml(html2); marker.openInfoWindowHtml(html); } //]]> 函数pageLoad(){ }
试试这个,它更容易处理。以下是谷歌的例子:

function setupMap() {
 if (GBrowserIsCompatible()) {
   map = new GMap2(document.getElementById("map"));
   map.addControl(new GLargeMapControl());
   map.setCenter(new GLatLng(41, -98), 4);
   window.setTimeout(setupWeatherMarkers, 0);
 }
}

function getWeatherMarkers(n) {
  var batch = [];
  for (var i = 0; i < n; ++i) {
    batch.push(new GMarker(getRandomPoint(), 
      { icon: getWeatherIcon() }));
  }
  return batch;
}

function setupWeatherMarkers() {
  mgr = new GMarkerManager(map);
  mgr.addMarkers(getWeatherMarkers(20), 3);
  mgr.addMarkers(getWeatherMarkers(200), 6);
  mgr.addMarkers(getWeatherMarkers(1000), 8);
  mgr.refresh();
}
函数设置映射(){
if(GBrowserIsCompatible()){
map=新的GMap2(document.getElementById(“map”);
addControl(新的GlargeMappControl());
地图设置中心(新格拉特林(41,-98),4);
setTimeout(setupWeatherMarkers,0);
}
}
功能getWeatherMarkers(n){
var批=[];
对于(变量i=0;i
我认为谷歌地图一次不能显示多个信息窗口,所以当你打开第二个窗口时,第一个窗口就会关闭

编辑:单击标记时,标记也不会自动打开信息窗口。您需要将单击处理程序附加到调用showInfoWindowHtml方法的标记上。我使用一个助手函数来创建一个标记并自动添加单击处理程序

function createMarkerHtml(point, title, html) {
    var marker = new GMarker(point, { title: title });
    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
    return marker;
}

map.addOverlay(createMarkerHtml(new GLatLng(<%=coordinates%>), "Marker 1", html));
map.addOverlay(createMarkerHtml(new GLatLng(31.977211,35.951729), "Marker 2", html2));
函数createMarkerHtml(点、标题、html){
var marker=新的GMarker(点,{title:title});
addListener(标记,“单击”,函数(){marker.openInfoWindowHtml(html);});
返回标记;
}
addOverlay(createMarkerHtml(新的GLatLng(),“Marker 1”,html));
map.addOverlay(createMarkerHtml(新GLatLng(31.977211,35.951729),“Marker 2”,html2));

回答问题的第二部分:

我希望有一种方法能够将它的所有记录传递给我的javascript,并为表中的每个映射创建一个标记

我(作为一个例子——大约一年前写的)有以下代码:

在代码背后我有这样的东西(恐怕是c):

LatitudeLogitudeMessage是一个自定义类,如下所示:

public class LatitudeLogitudeMessage
{
    public decimal? Latitude { get; set; }
    public decimal? Longitude { get; set; }
    public string Message { get; set; }
    public string Details { get; set; }
    public string Address { get; set; }

    public LatitudeLogitudeMessage(string addressToFind)
    {
        Address = addressToFind;
        Details = addressToFind.Replace(",", ",<br />");
    }
}
它对代码隐藏调用GetPoints方法,并将结果传递给showPoints:

function showPoints(latLongs)
{
  GLog.write("Showing points");
  var points = [];
  var latLngBounds = new GLatLngBounds();

  for (var i = 0; i < latLongs.length; i++)
  {
    if ("" == latLongs[i].Message)
    {
      points[i] = new GLatLng(latLongs[i].Latitude, latLongs[i].Longitude);
      var marker = 
            new GMarker(points[i], {title: latLongs[i].Details, clickable: false});
      map.addOverlay(marker);
      latLngBounds.extend(points[i]);
    }
    else
    {
      GLog.write(latLongs[i].Message);
    }
  }

  if (points.length > 1)
  {
    var bounds = new GBounds(points);
    var center = new GLatLng(
         (latLngBounds.getSouthWest().lat() 
           + latLngBounds.getNorthEast().lat()) /2.,
         (latLngBounds.getSouthWest().lng() 
           + latLngBounds.getNorthEast().lng()) /2.);
    var newZoom = map.getBoundsZoomLevel(latLngBounds, map.getSize());
    map.setCenter(center, newZoom);
  }
  else
  {
    map.setCenter(points[0], defaultZoomLevel);
  }
}
功能显示点(latLongs)
{
GLog.write(“显示点”);
var点=[];
var latLngBounds=新的GLatLngBounds();
对于(var i=0;i1)
{
var边界=新的GBounds(点);
var中心=新玻璃(
(latLngBounds.getSouthWest().lat()
+latLngBounds.getNorthEast().lat())/2。,
(latLngBounds.getSouthWest().lng()
+latLngBounds.getNorthEast().lng())/2。);
var newZoom=map.getBoundsZoomLevel(latLngBounds,map.getSize());
map.setCenter(center,newZoom);
}
其他的
{
地图设置中心(点[0],默认ZoomLevel);
}
}

因此,这将获取点数组,并在其上迭代创建一个标记,以列表中的第一项为中心(不聪明,但它对我有效)。

您能给我们生成的html输出吗?检查它,我编辑了post,但第二个根本没有显示,我关闭第一个,第二个没有显示,我还点击了标记体本身,它不再显示信息窗口,即使是用于显示。。。
PageMethods.GetPoints(address, showPoints);
function showPoints(latLongs)
{
  GLog.write("Showing points");
  var points = [];
  var latLngBounds = new GLatLngBounds();

  for (var i = 0; i < latLongs.length; i++)
  {
    if ("" == latLongs[i].Message)
    {
      points[i] = new GLatLng(latLongs[i].Latitude, latLongs[i].Longitude);
      var marker = 
            new GMarker(points[i], {title: latLongs[i].Details, clickable: false});
      map.addOverlay(marker);
      latLngBounds.extend(points[i]);
    }
    else
    {
      GLog.write(latLongs[i].Message);
    }
  }

  if (points.length > 1)
  {
    var bounds = new GBounds(points);
    var center = new GLatLng(
         (latLngBounds.getSouthWest().lat() 
           + latLngBounds.getNorthEast().lat()) /2.,
         (latLngBounds.getSouthWest().lng() 
           + latLngBounds.getNorthEast().lng()) /2.);
    var newZoom = map.getBoundsZoomLevel(latLngBounds, map.getSize());
    map.setCenter(center, newZoom);
  }
  else
  {
    map.setCenter(points[0], defaultZoomLevel);
  }
}