- 浏览: 5827061 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
首先导入google map JS(需要VPN):
<script src="http://maps.google.com/maps/api/js?v=3.5&sensor=false&libraries=places"></script>
然后定义一个地图显示区域:
<div id="content_map"></div>
最后添加JS:
使用cordova获取你当前的位置,成功的话执行onGeoSuccess,在该函数中查询门店位置信息:
获取到所有经纬度信息之后再初始化map,并在map上添加marker:
第一次地图显示的时候最好resize一下,使你的位置位于屏幕中心,refreshMap用于控制是否resizeMap,这样每次返回map_page的时候不至于总是resizeMap:
工具,计算2点间距离,返回的是mile英里数
最后显示的效果如下:
<script src="http://maps.google.com/maps/api/js?v=3.5&sensor=false&libraries=places"></script>
然后定义一个地图显示区域:
<div id="content_map"></div>
最后添加JS:
/////////////////////////////////////////////////////////////////////////////// //map start //var geocoder; var MY_POSITION="You are here"; var map; var markersArray = []; var latlng=null; function initializeMap(position) { $("#content_map").width($(window).width()).height($(window).height()-40); // geocoder = new google.maps.Geocoder(); if (typeof google === 'undefined') { log("================google is undefined================"); return ; } if(position==null){ latlng = new google.maps.LatLng(38.54,77.02);//华盛顿经纬度 }else{ latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); } var myOptions = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("content_map"), myOptions); } function resizeMap(){ if (!isNull(map)) { google.maps.event.trigger(map, 'resize'); map.setCenter(latlng); } } function addMarker(location, item) { if (item === MY_POSITION) { var marker = new google.maps.Marker({ position : location, title : MY_POSITION, map : map }); markersArray.push(marker); var contentString = '<div style="color:black;text-align:center;">' +MY_POSITION+'</div>'; var win = new google.maps.InfoWindow({ content: contentString }); google.maps.event.addListener(marker, 'click', function() { win.open(map, marker); }); } else { var marker = new google.maps.Marker({ position : location, title : item.storeName, // icon:"img/icon.png", map : map }); markersArray.push(marker); var contentString = '<div style="color:black;text-align:center;">' +item.storeName+'<br />' +item.storeAddress+'</div>'; var infowindow = new google.maps.InfoWindow({ content: contentString }); google.maps.event.addListener(marker, 'click', function() { // map.setZoom(15); // map.setCenter(marker.getPosition()); infowindow.open(map, marker); }); google.maps.event.addListener(marker, 'dblclick', function() { onStoreClick(item); }); } } // Removes the overlays from the map, but keeps them in the array function clearOverlays() { if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null); } } } // Shows any overlays currently in the array function showOverlays() { if (markersArray) { for (i in markersArray) { markersArray[i].setMap(map); } } } // Deletes all markers in the array by removing references to them function deleteOverlays() { if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null); } markersArray.length = 0; } } /* function codeAddress() { var address = document.getElementById("address").value; if (geocoder) { geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); showAlert(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { showAlert("Geocode was not successful for the following reason: " + status); } }); } } */ //onSuccess Geolocation function onGeoSuccess(position) { curPosition=position; doCommandFindStoreList(appConfig,user); } // onError Callback receives a PositionError object function onGeoError(error) { onGeoSuccess(null); } var curPosition=null;// function doCommandFindStoreList(appConfig,user){ var senddata = {}; senddata.sid = user.sid; senddata.companyId = appConfig.companyId; senddata.brandId = appConfig.brandId; if(curPosition!=null){ senddata.latitude=curPosition.coords.latitude; senddata.longitude=curPosition.coords.longitude; } var require=$("#homepage #search").val().trim(); if(require.length>0){ senddata.require = require; } ajax(COMMAND_FIND_STORE_LIST,STORE_LIST_URL,senddata); }; //map end ///////////////////////////////////////////////////////////////////////////////
使用cordova获取你当前的位置,成功的话执行onGeoSuccess,在该函数中查询门店位置信息:
if(navigator.geolocation){ var options = { enableHighAccuracy: true, maximumAge: 30000, timeout: 8000 }; navigator.geolocation.getCurrentPosition(onGeoSuccess , onGeoError , options); }else{//Geolocation is not supported by this browser. onGeoSuccess(null); }
获取到所有经纬度信息之后再初始化map,并在map上添加marker:
case COMMAND_FIND_STORE_LIST: initializeMap(curPosition); $("#homepage #content_store_list").empty(); $.each(data.listStroe,function(i,item){ item.opening=isStoreOpen(item); var openStatus="<span style='font-size:12px;color:red;font-weight:normal;margin-left:10px;'>[OPEN]</span>"; if(item.opening!=0){ openStatus="<span style='font-size:12px;color:#666;font-weight:normal;margin-left:10px;'>"+getStoreOpenRemainingTime(item)+"</span>"; } var distance=""; if(curPosition!=null){ if(item.latitude==null||item.longitude==null){ }else{ distance=GetDistance(item.latitude,item.longitude,curPosition.coords.latitude,curPosition.coords.longitude);// } } var display="inline"; if(isNull(item.customerId)||item.customerId==0){ display="none"; }else{ display="inline"; } var itemStr=JSON.stringify(item); $("#homepage #content_store_list").append("<li class='li_item' onclick='onStoreClick("+itemStr+");'><div style='font-size:16px;font-weight:bold;margin-bottom:5px;'><span>"+item.storeName+"</span>"+openStatus+"<span style='float:right'><img style='display:"+display+"' src='img/my_favorite.png'/></span></div><div><span style='font-size:14px;'>"+item.storeAddress+"</span><div><span style='font-size:14px;'>"+item.city+","+item.provinceShrtNm+" "+item.zip+"</span><span style='font-size:14px;float:right;'>"+distance+"</span></div></div></li>"); if(!isNull(map)){ if(curPosition!=null){ addMarker(map.getCenter(),MY_POSITION); } if(item.latitude!=null){ var location = new google.maps.LatLng(item.latitude,item.longitude); addMarker(location,item); } } }); break;
第一次地图显示的时候最好resize一下,使你的位置位于屏幕中心,refreshMap用于控制是否resizeMap,这样每次返回map_page的时候不至于总是resizeMap:
var refreshMap=true; $(document).delegate('#map_page', 'pageshow', function () { curPage="map_page"; if(refreshMap){ refreshMap=false; resizeMap(); } });
工具,计算2点间距离,返回的是mile英里数
function GetDistance(lat1,lng1,lat2,lng2){ var radLat1 = Rad(lat1); var radLat2 = Rad(lat2); var a = radLat1 - radLat2; var b = Rad(lng1) - Rad(lng2); var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); s = s *6378.137 ;// EARTH_RADIUS; s = 0.62*Math.round(s * 10000) / 10000; s=s.toFixed(0); return s+"mi"; }
最后显示的效果如下:
发表评论
-
JQ插件:radiosToSlider
2014-09-11 17:43 1380demo: http://rubentd.com/radios ... -
Javascript常用正则表达式集合
2014-09-06 22:08 14971.匹配正整数:/^[0-9]*[1-9][0-9]*$/ 2 ... -
关于CSS细节集合
2014-09-05 12:23 1418以后可能会用到,记一下 原址:http://www.iteye ... -
cordova插件InAppBrowser在iPhone上显示url和Done、Back/Forward键的问题
2014-09-02 14:11 12046I am currently building a News ... -
CSS实现简单动态渐变闪烁效果
2014-08-28 15:57 4106CSS练习用例: .event { border ... -
JQ插件:nicescroll自定义滚动条
2014-08-27 15:53 2112参考: http://www.areaaperta.com/n ... -
jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
2014-08-27 14:55 1705<!DOCTYPE html PUBLIC &quo ... -
JQ插件:qrcode生成二维码
2014-08-27 14:51 7560jquery.qrcode.js 是把它用jquery方式封装 ... -
JQ插件:日期时间选择器date picker
2014-08-27 13:59 2439这个控件关键是它能支持在mobile中显示。iPhone和an ... -
JQ插件:Knob旋钮按钮
2014-08-27 10:33 2540在线演示 用法介绍: 分享一款超棒的jQuery旋钮插件 ... -
JQM:如何点击footer中的navbar只切换content的内容
2014-08-22 10:53 5211在JQM运用中想固定Header与Footer,当然Foote ... -
各种JS jQuery CSS资源等
2014-08-15 23:53 13822014年最酷的30个JavaScript库 http://w ... -
CSS将图片和文字垂直居中
2014-08-15 16:56 1250这个问题说起来有点惭 ... -
jQuery 中使用 JSON
2014-08-15 11:29 3272在 jQuery 中已经提供了对于解析 JSON 的内在支持, ... -
JQM Toggle switch、selectmenu动态设置默认选中值时没有效果的问题
2014-08-14 13:21 2186静态时,ok,没问题,如下: <label for=&q ... -
cordova读写文件(2)
2014-08-13 17:53 3157上一篇讲的是如何将数据写入文件 这篇讲如何读取文件。 v ... -
cordova读写文件(1)
2014-08-13 17:44 23574使用cordova可以很方便的在手机sdcard中读写文件。 ... -
JQM自动提示插件autoComplete.js
2014-08-11 17:33 1429JQM自动提示插件: https://github.com/c ... -
Jquery mobile 新手问题总汇
2014-08-05 14:43 1533http://www.wglong.com/main/arti ... -
JQM控件之Navbar和Tabs
2014-08-01 15:49 6384在JQM中使用导航栏Navbar是简单的。 只需要将data ...
相关推荐
本教程将深入讲解如何使用谷歌地图API来实现地图标注。 首先,我们需要在Google Developers Console中创建一个新的项目,并启用“Google Maps JavaScript API”。这一步骤将为我们生成一个API密钥,它是连接我们...
4. **添加标记和信息窗口**:如果应用需要在地图上标注特定位置,可以使用`google.maps.Marker()`创建标记,并用`google.maps.InfoWindow()`显示相关信息。 5. **处理用户交互**:可以监听地图事件,如点击、拖动等...
总结起来,使用Google Maps API在地图上标记点涉及创建Map实例、Marker对象,以及可能的InfoWindow对象。通过结合JavaScript编程和API提供的方法,可以实现交互式的地图应用,满足各种展示和交互需求。在实际开发...
总之,通过HTML和Google Maps API,我们可以轻松地在网页上展示地图并标注特定地点。这个过程涉及到HTML结构的构建、API的引入、JavaScript代码的编写以及与地图对象的交互。在压缩包中的“地图”文件可能包含了示例...
在中文环境下,GoogleMap API同样提供了丰富的功能,便于中国用户在地图应用中使用中文标注和搜索。 **1. 获取API密钥** 使用GoogleMap中文API首先需要获取API密钥。开发者需要在Google Cloud Console中创建项目,...
信息窗口会自动添加到地图并与一个GInfoWindow对象关联。 通过以上知识点,开发者可以创建各种复杂的地图应用,如标注地点、绘制路径、显示区域信息等。Google Map API提供了丰富的功能和灵活性,使地图集成成为...
地图接口调用是Web开发中常见的一种功能,用于在网页上展示地图并进行交互操作。在本示例中,我们将探讨如何通过调用地图接口来实现地图的展示、标注的添加以及鼠标悬停时的标注备注显示。我们将重点关注Google Maps...
然后,创建一个div元素作为地图容器,并通过`google.maps.Map`对象初始化地图: ```javascript var map = new google.maps.Map(document.getElementById('map'), { center: {lat: -34.397, lng: 150.644}, zoom: 8...
要使用API,我们需要在Google Cloud Console中创建一个项目,启用Google Maps JavaScript API,并获取API密钥。 接着,我们来看看如何在网页中引入Google Maps API。这通常通过在HTML文件中添加以下脚本标签完成: ...
8. **信息窗口**:使用`new google.maps.InfoWindow()`创建信息窗口,可以展示标注点或地图上其他元素的详细信息。通过`infoWindow.open(map, marker)`来显示信息窗口。 9. **地图样式**:通过`styledMapType`可以...
本文将详细讲解如何在Android应用中集成和使用地图,以实现地图的显示、定位、标注和路线规划等功能。 首先,我们要了解Android地图主要依赖于Google Maps Android API,它提供了丰富的地图功能,包括地图视图、...
总之,VS2008 WinForm类型的Google Map二次开发涉及的关键技术有:使用WebBrowser控件加载和交互地图,通过JavaScript初始化地图,以及C#调用JavaScript代码添加文本标注。通过这些技术,开发者可以创建具有自定义...
高德地图API提供了多种方式实现标注,如Marker、InfoWindow等。创建一个Marker实例,设置其位置、图标和点击事件: ```java LatLng latLng = new LatLng(39.908, 116.407); // 坐标点 MarkerOptions markerOptions ...
本项目是一个关于在iOS上使用谷歌地图的示例,涵盖了定位、地图上的标注(气泡)显示以及自定义气泡和点击事件处理,最终实现地图导航功能。 首先,要使用谷歌地图SDK,你需要在Google Developers Console注册并...
例如,通过`Marker`对象可以在地图上添加标注: ```javascript var marker = new google.maps.Marker({ position: myLatlng, map: map, title: 'Hello World!' }); ``` 信息窗口则可以通过`InfoWindow`对象来...
4. 初始化地图:使用Google Maps API的`new google.maps.Map()`方法创建地图对象,并设置地图的中心点、缩放级别等属性。 5. 添加标记:利用`new google.maps.Marker()`创建标记,并设置标记的位置和图标。 6. 添加...
以下是一个简单的示例,展示如何在网页上加载并显示一张地图。 ```html <!DOCTYPE html> ;charset=utf-8"/> <title>Google Maps JavaScript API Example <script src="http://ditu.google....
文件列表中的"googleMap"可能是示例代码的文件夹,其中可能包含HTML、CSS和JavaScript文件,展示了如何在实际项目中引用和使用Google Maps API。如果你有这些文件,通过查看和运行它们,你将能更好地理解如何将...
- 标记与信息窗口:可以在地图上添加标记(Marker)表示特定地点,并为标记添加信息窗口(InfoWindow)显示详细信息。 - 路线规划:支持计算驾车、步行或公共交通路线,显示多步骤的导航指示。 - 地图覆盖物:...