Java 春天的谷歌地图
我有一个相当大和神秘的问题。我想动态地将标记添加到放置在JSP页面上的GoogleMap中,并使用数据库中的坐标 所以我的代码看起来像这样:Java 春天的谷歌地图,java,spring,jsp,google-maps,Java,Spring,Jsp,Google Maps,我有一个相当大和神秘的问题。我想动态地将标记添加到放置在JSP页面上的GoogleMap中,并使用数据库中的坐标 所以我的代码看起来像这样: <script type="text/javascript"> var map; var markers = []; function initialize() { var options = {
<script type="text/javascript">
var map;
var markers = [];
function initialize() {
var options = {
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN],
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
}
<%
String id_wydarzenia_session = null;
List<Koordynaty> koordynaty = null;
Double szer = null;
Double wys = null;
try {
id_wydarzenia_session = session.getAttribute("id_wydarzenia").toString();
WydarzenieDaoImpl wydarzeniedao = new WydarzenieDaoImpl();
koordynaty = wydarzeniedao.pobierzKoordynatyWydarzenia(id_wydarzenia_session);
} catch (Exception e) {
System.out.println(e.getMessage());
}
%>
var wysokoscCenter = "<%=koordynaty.get(0).getSzerokosc()%>";
var szerokoscCenter = "<%=koordynaty.get(0).getWysokosc()%>";
map = new google.maps.Map(document.getElementById('map'));
map.setCenter(new google.maps.LatLng(wysokoscCenter, szerokoscCenter));
map.setZoom(17);
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
<%
Iterator<Koordynaty> iteratorKoordynaty = koordynaty.iterator();
while (iteratorKoordynaty.hasNext()) {
Koordynaty koordynatyDetails = iteratorKoordynaty.next();
%>
addMarker(new google.maps.LatLng(koordynatyDetails.getWysokosc(), koordynatyDetails.getSzerokosc()), "Marker");
<%
}
%>
}
function addMarker(latlng, myTitle) {
markers.push(new google.maps.Marker({
position: latlng,
map: map,
title: myTitle,
icon: "http://maps.google.com/mapfiles/marker" + String.fromCharCode(markers.length + 65) + ".png"
}));
}
</script>
var映射;
var标记=[];
函数初始化(){
变量选项={
mapTypeControlOptions:{
MapTypeId:[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.TERRAIN],
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单
}
}
var wysokoscCenter=“”;
var szerokoscCenter=“”;
map=newgoogle.maps.map(document.getElementById('map');
map.setCenter(新的google.maps.LatLng(wysokoscCenter,szerokoscCenter));
map.setZoom(17);
setMapTypeId(google.maps.MapTypeId.ROADMAP);
addMarker(新的google.maps.LatLng(koordynatydails.getWysokosc(),koordynatydails.getSzerokosc()),“Marker”);
}
功能添加标记(latlng,myTitle){
markers.push(新的google.maps.Marker)({
位置:latlng,
地图:地图,
标题:我的标题,
图标:“http://maps.google.com/mapfiles/marker“+String.fromCharCode(markers.length+65)+”“.png”
}));
}
我检查了
addMarker
函数,每个坐标都传递得很好,但地图没有显示出来。我真的不知道如何解决这个问题/ 看起来图像的路径错误,请尝试以下操作
改变
icon: "http://maps.google.com/mapfiles/marker" + String.fromCharCode(markers.length + 65) + ".png"
到
http://maps.google.com/mapfiles/marker.png
如果上述更改将图标添加到地图中,则可以确认字符串.fromCharCode(markers.length+65)
中存在错误。您添加带有A、B、C等图标的逻辑似乎很好。我怀疑marker+String.fromCharCode(markers.length+65)
如果硬编码的标记路径有效,则尝试用sngle引号替换双引号(如以下代码中所示开始和结束)
更新:
进行了一些修改,以使地图和标记能够正常工作
您可以看到地图已显示并添加了标记。请通读修复代码我注意到你的小提琴中有一句话:
addMarker(new google.maps.LatLng(52.2319262 32898, 21.019806861877), "Alien");
在第一个参数中有一个额外的空格。当我将
52.2319262 32898
更改为52.231926232898
时,小提琴工作正常。所以,请查看填充这些变量的数据。console中是否有错误?没有。根本没有错误。只有地图没有显示。你能“刮”服务器生成的代码,把它变成JS文件(和/或把代码也发布在这里)吗?你能让它的静态版本按预期运行吗?是的,我能,但我今天晚些时候(晚上)会这样做。你从哪里得到MarkerySokosc的值?Markerwisokosc的格式是什么?是逗号分隔的吗?好的,我改了。此时此刻,我真的不知道如何在JSFIDLE中链接一些数据库来向您表明它不起作用/你必须“分而治之”,我会先消除数据,尽可能解决问题。首先让jsp文件能够很好地处理静态数据,就像小提琴一样。然后计算出数据库的内容。
addMarker(new google.maps.LatLng(52.2319262 32898, 21.019806861877), "Alien");