代码在html中可以正常显示,但放到jsp中,地图能显示,但是点的“LABEL”和颜色都不能动态显示,好像是${}没有接受到。为什么啊,刚开始搞openlayers,很多不明白啊,高手讲明白些
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>OpenLayers Labeled Features Example</title>
    <link rel="stylesheet" href="./theme/default/style.css" type="text/css" />   
      <link rel="stylesheet" href="style.css" type="text/css" /> 
    <script src="./lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map;        function init(){
            map = new OpenLayers.Map('map');
            
            var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
                    "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
            map.addLayer(layer);
            
            // allow testing of specific renderers via "?renderer=Canvas", etc
            var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
            renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
            
            var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {
                styleMap: new OpenLayers.StyleMap({'default':{
                    strokeColor: "GRAY",
                    strokeOpacity: 1,
                    strokeWidth: 2,
                    fillColor: "#FF5500",
                    fillOpacity: 0.5,
                    pointRadius: 6,
                    pointerEvents: "visiblePainted",
                    label : " station:${station}",
                    
                    fontColor: "${favColor}",
                    fontSize: "15px",
                    fontFamily: "Courier New, monospace",
                    fontWeight: "bold",
                    labelAlign: "${align}"
                }}),
                renderers: renderer
            });
            
            // create a point feature
            var point = new OpenLayers.Geometry.Point(-100, 45.68);
            var pointFeature = new OpenLayers.Feature.Vector(point);
            pointFeature.attributes = {
                station: "GY",
                favColor: 'red',
                align: "rt"
            };
            
            map.addLayer(vectorLayer);
            map.setCenter(new OpenLayers.LonLat(point.x, point.y), 3);
            vectorLayer.addFeatures([pointFeature]);
        }
    </script>
  </head>
  <body onload="init();">
    <h1 id="title">OpenLayers Labeled features example</h1>
    <div id="tags"></div>
    <p id="shortdesc">
        Label vector features with a text symbolizer.
    </p>
    <div id="map" class="smallmap"></div>
    <div id="docs">
    This example shows drawing simple vector features with a label
    </div>
  </body>
</html>

解决方案 »

  1.   

    我也遇见过这个问题,也是转换OpenLayers的html样例。html是不能直接转动态网页的,记得需要把里面的所有控件标签都改成jsp里的(我当时是.net)。你可以从网上找找html转jsp的文章。
      

  2.   

    UP  我也遇到这个问题,  在htm和jsp中不一样
    大家怎么解决的!
      

  3.   

    jsp和openlayers中 $冲突的问题
    可以这样 label:"<%="${label}"%>"