1. 程式人生 > >Openlayer 3 的點選彈出框

Openlayer 3 的點選彈出框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/ol.css" type="text/css">
    <script src="js/jquery-1.11.3.js"></script>
    <script src="js/ol.js"></script>
    <
style> #map{ width:100%; height:100%; } .label,.title{ background: #000; color:#fff; padding:3px; } .popup-content{ background: #fff; padding:3px; } .ol-popup-closer { position
: absolute; top: 2px; right: 8px; } .ol-popup-closer:after { content: "x"; color: #fff; } </style> </head> <body> <div id="map"></div> <script> $(document).ready(function(){ var map
= new ol.Map({ controls: ol.control.defaults().extend([ new ol.control.ScaleLine({}) ]), target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.transform([106.20, 37.30], 'EPSG:4326', 'EPSG:3857'), maxZoom: 19, zoom: 5 }), logo: false });//地圖初始化 initMenuAndAllCar() var carPositionLayer = new ol.layer.Vector({ style: function (feature, resolution) { var online = feature.get("online"); var status; switch(online){ case "0": status= '離線'; break; case "1": status= '線上'; break; case "無法獲取狀態": status= online; break; } var opacity = (online !== "1") ? 0.4 : 1; var icon_url = "image/" + feature.get("image"); var style = new ol.style.Style({ image: new ol.style.Icon({ opacity: opacity, scale: 1.2, src: icon_url }) }); feature.setStyle(style); var label_element = document.createElement('div'); label_element.className = 'label'; label_element.innerHTML = status; var label = new ol.Overlay({ element: label_element, offset: [20, 6], stopEvent: false }); var coordinate = feature.getGeometry().getCoordinates(); label.setPosition(coordinate); map.addOverlay(label); } });// 車輛位置圖層 map.addLayer(carPositionLayer); var map_click = map.on('click', function (evt) { var pixel = map.getEventPixel(evt.originalEvent); var feature = map.forEachFeatureAtPixel(pixel, function (feature) { return feature; });//判斷當前單擊處是否有要素,捕獲到要素時彈出popup var coordinate = evt.coordinate; if (feature !== undefined) { removeAllOverlay(map); var popup_element = document.createElement('div'); popup_element.className = 'ol-popup'; var closer = document.createElement('a'); closer.href = '#'; closer.className = 'ol-popup-closer'; var title = document.createElement('div'); title.className = 'title'; var content = document.createElement('div'); content.className = 'popup-content'; $(popup_element).append(closer); $(popup_element).append(title); $(popup_element).append(content); var info_popup = new ol.Overlay(({ element: popup_element, autoPan: true, autoPanAnimation: { duration: 250 //當Popup超出地圖邊界時,地圖移動的速度 } })); map.addOverlay(info_popup); $(closer).on('click', function (event) { event.preventDefault(); info_popup.setPosition(undefined); });// 點選關閉的按鈕 var name = feature.get("name"); var user_contact = feature.get("user_contact"); var time = feature.get("time"); var speed = parseFloat(feature.get("speed")).toFixed(2); title.innerHTML ='<div><strong></strong>'+name+'</div></div>'; content.innerHTML = '<div><div>聯絡方式:'+user_contact+'</div><div>時 刻:'+time+'</div><div>速 度'+speed+'</div></div>'; info_popup.setPosition(coordinate); } });//為map新增點選事件監聽,彈出popup function initMenuAndAllCar(){ $.ajax({ url:"json/allAllPosition.json", success:function(results){ var features = (new ol.format.GeoJSON()).readFeatures(results, {featureProjection: 'EPSG:3857'}); var carSource = new ol.source.Vector({ features: features }); carPositionLayer.setSource(carSource); var extent = carSource.getExtent(); map.getView().fit(extent, map.getSize(),{padding: [10,10,10,10]}); } }); }//初始化所有車的位置 function removeAllOverlay(map){ map.getOverlays().getArray().slice(0).forEach(function(overlay) { map.removeOverlay(overlay); }); }//清除所有車 }); </script> </body> </html>

相關推薦

Openlayer 3

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="styleshe

ArcGIS 實現區域查詢要素後,要素

      提醒說明:本文用了兩種方法,建議直接看第二種,因為第二種比第一種靠譜簡單;       2015.11.12 在webGis 專案的開發中,當前已經實現使用QueryTask來針對要素進行NAME,空間的查詢之後,並使用Symbol將要素顯示出來在圖上,如下圖所

vue禁用與啟用以及提示

一·,     HTML <tr v-for="(item,index) in showData" :key="index"> <td>{{item.developer_id}}</td&

不佔位置的體提示

效果圖<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>小例子</title> <style type="text/css"&g

cell上 button資訊提示

-(IBAction)onWarnInfo:(id)sender{ <span style="white-space:pre"> </span>UIButton *btn=(UIButton *)sender; N

jsp頁面iframe,並傳值到後臺

 function openwindow(id,endDate){                     layer.open({                         type: 2,                         title: false,                  

1. 變數提升 2. 條件語句 3. 迴圈語句 的三種形式 If條件的種類

1.     變數提升 變數提升是瀏覽器的一個功能,在執行js程式碼之前,瀏覽器會給js一個全域性作用域叫window ,window分兩個模組,一個叫記憶體模組,一個叫執行模組,記憶體模組找到當前作用域下的所有帶var和function的關鍵字,執行模組執行js程

JS特效教程:給網站新增滑鼠指定漢字特效

網站新增滑鼠點選彈出指定漢字特效,就是滑鼠點選站點任何位置,都會隨機彈出我們指定的一組漢字中的一個。比如指定“文明,自由,民主,公正,和諧”等,點選滑鼠時就會隨機顯示這一組的某個詞語,見下圖: 給網站新增滑鼠點選彈出指定漢字特效的操作辦法 這個特效不單單適用於 WordPress 部落

高德地圖座標點點

this.pointSimplifierIns.on('pointClick pointMouseover pointMouseout', function(e, record) {    if(e.type === 'pointClick'){    &

自定義設定百度商橋

我們在使用百度商橋時,有時想通過點選自己的按鈕開啟商橋聊天溝通,此時就可以使用以下方法。 <a class="open_shangqiao" href="javascript:void(0);">彈出百度商橋</a> <script type="text/jav

ArcGIS API for Silverlight開發中滑鼠左鍵地圖上的視窗及右鍵快捷選單的實現程式碼

1、首先在SL專案中新增一個抽象類ContextMenu.cs檔案,程式碼如下:using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.

自定義PopupWindow,PopupWindow,背景變暗,仿分享

注:參照大神程式碼寫的 自定義程式碼 package com.duanlian.popupwindowdemo; import android.app.Activity; import android.content.Context; import android.g

html5手機端的側邊滑動選單程式碼

1 <!doctype html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="

Qt軟鍵盤

在QLineEdit控制元件右鍵,選擇seletionChanged槽函式 在槽函式的主體編寫如下 void MainWindow::on_lineEdit_selectionChanged()

detailview按鈕列 視窗中使用datagrid

$(function(){ $('#dg').datagrid({ title:'test', view:detailview, remoteSort:false, sin

JQ實現右鍵選單

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> //遮蔽瀏覽器右鍵選單 doc

【JS】抽獎大轉盤,抽獎效果

抽獎大轉盤,點選彈出抽獎效果 <!--抽獎點選彈出框--> <div id="dzp" class="dzp" > <div class="rotary"> <div class="rotaryArr

js通過按鈕button一個新的視窗頁面

<SCRIPT LANGUAGE="javascript">   <!--   window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scro

高德地圖 infoWindow 預設關閉多個資訊窗體

地圖載入完成不想把info窗體顯示,所以找了很多都沒有。最後測試之後這樣改: 官網API的程式碼如下: 結果如下: 預設不開啟,把  marker.emit('click', {target: marker});刪掉就行。

iOS textview鍵盤的回車鍵,新增相應事件

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSStr