在谷歌地图多个标记

我加了谷歌地图有两个标记(我只是测试),代码为:

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); }

问题是,只有一个标记文本显示(白色三角形里面的文字),另一种是不可见的,为什么呢? 另一件事,我有映射表,它像:的azazaz,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>

--------------解决方案-------------

在回答你问题的第二部分:

我希望能够所有的记录传递给我的javascript,并创建一个标记为每个地图,我有我的表的方式

我已经(作为一个例子 - 写了一年多前)下面的代码:

在代码隐藏我有这样的事情(C#恐怕):

[WebMethod]
public LatitudeLogitudeMessage[] GetPoints(string postCodes)
{
string[] postCodeArray = postCodes.Split(",".ToCharArray());

LatitudeLogitudeMessage[] pointArray =
new LatitudeLogitudeMessage[postCodeArray.Length];
int index = 0;
foreach (string postCode in postCodeArray)
{
pointArray[index] = GetPoint(postCode);
index++;
}

return pointArray;
}

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 />");
}
}

该方法的GetPoint bascially填补了这些细节。

在代码中盈我然后有:

PageMethods.GetPoints(address, showPoints);

这就要求在后面的代码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);
}
}

因此,这需要点的数组,并迭代他们创造一个标志,因为它的推移,围绕在列表中的第一项(不聪明,但它的工作对我来说)。

尝试标记管理器API,它更容易对付。 下面是谷歌的例子:

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();
}

我不认为谷歌地图可以显示多个信息窗口的时间,所以当你打开第二个,第一个关闭。

编辑:标记也不会自动自动打开信息窗口,当你点击它们。 你需要附加一个单击处理程序来调用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));

分类:asp.net 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.854 (s). 10 q(s)