Maker-shadow

本文介绍如何利用OpenLayers库实现地图上带有阴影效果的标记。通过设置标记的外部和背景图形及其位置偏移,确保阴影始终位于标记下方。此外,还介绍了地图初始化、图层创建及点坐标设置的基本步骤。
部署运行你感兴趣的模型镜像

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'mark-shadow.jsp' starting page</title>

    

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

<link rel="stylesheet" href="<%=basePath%>/Script/theme/default/style.css" type="text/css">

    <link rel="stylesheet" href="<%=basePath%>/Style/style.css" type="text/css">

<script src="<%=basePath%>/Script/lib/OpenLayers.js"></script>

<script type="text/javascript">

var SHADOW_Z_INDEX = 10;

        var MARKER_Z_INDEX = 11;

        var DIAMETER = 200;

        var NUMBER_OF_FEATURES = 15;

var map,layer;

function init(){

map  = new OpenLayers.Map('map');

var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;

            renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;

layer = new OpenLayers.Layer.Vector(

                "Marker Drop Shadows",

                {

                    styleMap: new OpenLayers.StyleMap({

                        // Set the external graphic and background graphic images.

                        externalGraphic: "<%=basePath%>Script/img/marker-gold.png",

                        backgroundGraphic: "<%=basePath%>Script/img/marker_shadow.png",

                        

                        // Makes sure the background graphic is placed correctly relative

                        // to the external graphic.

                        backgroundXOffset: 0,

                        backgroundYOffset: -7,

                        

                        // Set the z-indexes of both graphics to make sure the background

                        // graphics stay in the background (shadows on top of markers looks

                        // odd; let's not do that).

                        graphicZIndex: MARKER_Z_INDEX,

                        backgroundGraphicZIndex: SHADOW_Z_INDEX,

                        

                        pointRadius: 10

                    }),

                    isBaseLayer: true,

                    rendererOptions: {yOrdering: true},

                    renderers: renderer

                }

            );

            console.log('<%=basePath%>Script/img/marker-gold.png');

 

map.addLayers([layer]);

map.addControls([new OpenLayers.Control.LayerSwitcher(),new OpenLayers.Control.MousePosition()]);

map.zoomToMaxExtent();

layer.addFeatures(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-37.96875,54.84375)));

}

</script>

  </head>

  

  <body onload="init();">

  <h3>这是我的第一个正式程序,终于自己写了一个程序了,真难,希望自己能渡过这个难关,最近压力很大</h3>

  <ul>

  <li>创建地图对象</li>

  <li>创建地图图层【设置扩展图和扩展图的背景图,设置图片相对位置】</li>

  <li>创建画布上的点point[程序执行顺序是1、创建地图 2、创建点 3、设置点的位置图]</li>

  </ul>

  <hr>

    <div id="map" class="smallmap"></div>

  </body>

</html>

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Mockito 的 `mock-maker-inline` 是 Mockito 提供的一个增强功能模块,允许用户模拟诸如 final 类、final 方法、静态方法以及私有方法等原本在标准 Mockito 中无法直接模拟的代码结构。这一功能通过使用 `mockito-inline` 依赖实现,其底层基于 Inline ByteBuddy Agent 技术,能够更深入地修改字节码以支持上述高级模拟需求[^3]。 ### 配置与依赖 为了使用 `mock-maker-inline`,首先需要在项目中引入对应的 Maven 或 Gradle 依赖。对于 Maven 项目,需添加以下依赖到 `pom.xml` 文件中: ```xml <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>4.8.0</version> <!-- 请根据实际情况选择版本 --> <scope>test</scope> </dependency> ``` 此依赖自动包含了核心的 Mockito 功能,因此无需额外引入 `mockito-core`。如果测试框架基于 JUnit 5,则还应加入如下依赖以支持 Mockito 的 JUnit Jupiter 扩展: ```xml <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <version>4.8.0</version> <scope>test</scope> </dependency> ``` 一旦正确配置了依赖,即可在测试类中使用 `mockito-inline` 提供的扩展功能。 ### 使用方式 #### 模拟 final 方法或类 `mock-maker-inline` 支持对 final 类和 final 方法进行模拟。例如,可以创建一个 final 类的 mock 实例,定义其行为: ```java final class FinalClass { public String greet() { return "Hello"; } } @Test void testMockFinalClass() { FinalClass mock = mock(FinalClass.class); when(mock.greet()).thenReturn("Mocked Hello"); assertEquals("Mocked Hello", mock.greet()); } ``` #### 模拟静态方法(MockedStatic) 通过 `MockedStatic` 工具类,可以模拟静态方法的行为。这在测试工具类或静态工厂方法时非常有用: ```java @Test void testStaticMethod() { try (MockedStatic<Utils> mockedStatic = Mockito.mockStatic(Utils.class)) { mockedStatic.when(() -> Utils.getMessage()).thenReturn("Mocked Message"); assertEquals("Mocked Message", Utils.getMessage()); } } ``` #### 模拟构造函数(MockedConstruction) 如前所述,`MockedConstruction` 允许拦截模拟特定类的构造函数调用。这对于避免执行真实构造逻辑(如数据库连接)非常有效: ```java @Test void testWithMockedConstruction() { try (MockedConstruction<MyClass> mocked = Mockito.mockConstruction(MyClass.class)) { MyClass instance = new MyClass(); when(instance.getName()).thenReturn("Mocked Name"); assertEquals("Mocked Name", instance.getName()); } } ``` #### 自定义构造行为 还可以根据构造参数动态设置不同的模拟行为: ```java try (MockedConstruction<MyClass> mocked = Mockito.mockConstruction(MyClass.class, (mock, context) -> { if (context.arguments().contains("admin")) { when(mock.getRole()).thenReturn("Administrator"); } else { when(mock.getRole()).thenReturn("User"); } })) { MyClass admin = new MyClass("admin"); MyClass user = new MyClass("guest"); assertEquals("Administrator", admin.getRole()); assertEquals("User", user.getRole()); } ``` ### 注意事项 - 使用 `mock-maker-inline` 时应确保版本兼容性,建议使用较新的 Mockito 版本(如 3.4.0 及以上),以获得最佳支持。 - 对于某些复杂的模拟场景,如需要模拟私有方法或构造器链,可能需要结合其他工具(如 PowerMock)进行补充。 - 应合理控制模拟范围,避免过度使用 inline mock 导致测试难以维护或理解。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值