Google Map API V3开发(1)

Google Map API V3开发(2)

Google Map API V3开发(3)

Google Map API V3开发(4)

Google Map API V3开发(5)

Google Map API V3开发(6) 代码

11 

?  AdSense Library

?  绘图库

?  几何图形库

?  Panoramio 图层(库)

?  地方信息库

?  天气和云况图层(库)

几何图形库

Google Maps JavaScript API V3 几何图形库提供了一些实用程序函数,以便计算地球表面的几何数据。该库包含以下三个命名空间:

spherical,其中包含球面几何图形实用程序,可用于通过纬度和经度计算角度、距离和面积。

encoding,其中包含一些实用程序,可用于根据编码折线算法对折线路径进行编码和解码。

poly,其中包含一些实用程序函数,用于有关多边形和折线的计算。

要计算该距离,请调用 computeDistanceBetween(),并向其传递两个 LatLng 对象。

在有多个位置的情况下,您可改为使用 computeLength() 来计算给定路径的长度。

距离结果以米为单位表示。

要计算多边形区域的面积(以平方米为单位),请调用 computeArea(),并传递 LatLng 对象数组以定义闭合区域。

?    距离计算

//根据经纬度计算距离

private double rad(double d)

{

return d * Math.PI / 180.0;

}

public double getDistance(double lat1, double lng1, double lat2, double lng2)

{

double radLat1 = rad(lat1);

double radLat2 = rad(lat2);

double a = radLat1 - radLat2;

double b = rad(lng1) - rad(lng2);

double 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 * 6378137;

s = Math.Round(s * 10000);

s = s / 10000;

return s;//计算单位:公里

}

地方信息库

?  地方搜索请求

var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

var request = {
    location: pyrmont,
    radius: '500',
    types: ['store']
  };

service = new google.maps.places.PlacesService(map);
  service.search(request, callback);

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

?  文字搜索请求

var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

var request = {
    location: pyrmont,
    radius: '500',
    query: 'restaurant'
  };

service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);

?  地方详情请求

地方信息服务不仅可以提供某区域内的地方信息列表,还可以返回关于特定地方的详细信息。当地方搜索响应中返回某个地方后,其 reference 属性可用于请求关于该地方的更多详情,例如其完整地址、电话号码用户评分和评论等。

var request = {
  reference: 'CnRkAAAAGnBVNFDeQoOQHzgdOpOqJNV7K9-c5IQrWFUYD9TNhUmz5-aHhfqyKH0zmAcUlkqVCrpaKcV8ZjGQKzB6GXxtzUYcP-muHafGsmW-1CwjTPBCmK43AZpAwW0FRtQDQADj3H2bzwwHVIXlQAiccm7r4xIQmjt_Oqm2FejWpBxLWs3L_RoUbharABi5FMnKnzmRL2TGju6UA4k'
};

reference,包含可用于日后查询“详情”服务的令牌。该令牌可能与向“详情”服务发送的请求中所使用的引用不同。建议您定期更新为地方信息存储的引用。尽管该令牌可唯一地标识地方,但反之则不然:一个地方可能拥有多个有效的引用令牌。

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

?  地方信息自动填充

“地方自动填充”功能会附到您网页上的文本字段中,并监控用户在该字段中输入的字符。在用户输入文字的同时,自动填充会采用下拉选择列表的形式向应用返回地方预测。

var defaultBounds = new google.maps.LatLngBounds(
  new google.maps.LatLng(-33.8902, 151.1759),
  new google.maps.LatLng(-33.8474, 151.2631));

var input = document.getElementById('searchTextField');
var options = {
  bounds: defaultBounds,
  types: ['establishment']
};

autocomplete = new google.maps.places.Autocomplete(input, options);

?  获取地方信息

当用户从附加到文本字段的预测中选择了一个地方后,该服务就会触发 place_changed 事件。地方信息服务还会返回 PlaceResult 对象,您可以通过对 Autocomplete 对象调用 getPlace() 来访问该对象。

google.maps.event.addListener(autocomplete, 'place_changed', function() {
  var place = autocomplete.getPlace();
  if (place.geometry.viewport) {
    map.fitBounds(place.geometry.viewport);
  } else {
    map.setCenter(place.geometry.location);
    map.setZoom(17);
  }
  var image = new google.maps.MarkerImage(
      place.icon, new google.maps.Size(71, 71),
      new google.maps.Point(0, 0), new google.maps.Point(17, 34),
      new google.maps.Size(35, 35));
  marker.setIcon(image);
  marker.setPosition(place.geometry.location);
});

Google Map API V3开发(5)的更多相关文章

  1. Google Map API V3开发(1)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  2. Google Map API V3开发(2)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  3. Google Map API V3开发(3)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  4. Google Map API V3开发(4)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  5. Google Map API V3开发(6) 代码

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  6. Google map API V3

    本文主要总结Google map API V3使用中最简单也是最常见的一些操作以及相关概念,如果需要更加详细的信息,请直接阅读Google提供的关于map的文档. google map api v3文 ...

  7. Google Map API V3调用arcgis发布的瓦片地图服务

    由于最近项目需要用到CAD制作的地图,但之前一直使用的是用谷歌离线瓦片地图的方式,怎么样把CAD图像地图一样有缩放,移动的功能放到网页显示成了难题, 原先的谷歌地图的代码难道就不能用了?重新写一套代码 ...

  8. Google 地图 API V3 针对移动设备进行开发

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  9. 如何使用Google Map API开发Android地图应用

    两年前开发过的GoogleMap已经大变样,最近有项目要用到GoogleMap,重新来配置Android GoogleMap开发环境,还真是踩了不少坑. 一.下载Android SDK Manager ...

随机推荐

  1. 【ASM】ASMSNMP用户已存在

    [ASM]ASMSNMP用户已存在 During Oracle Grid Infrastructure for a cluster installation, the ASMSNMP account ...

  2. oracle一些基本语句

    --添加一个字段alter table 表名 add(列类型);--修改字段数据类型alter table 表名 modify(列类型);--删除一个字段alter table 表名 drop col ...

  3. 网页实时聊天之PHP实现websocket

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  4. [Java入门笔记] 面向对象编程基础(三):成员变量和局部变量

    在类中,变量根据定义的位置不同,可以分为成员变量和局部变量.

  5. 基础SQL语句/语法

    SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家!简要介绍基础语句: 1.说明:创建数据库  Create DATABAS ...

  6. 用Access为支撑,书写一个用C#写入数据库的案列

    /// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称&l ...

  7. [AR]高通Vuforia之Frame Markers

    软件环境 SDK:FrameMarkers-6-0-112.unitypackage(从官网 -> Download -> Samples -> Core Features 下载 ) ...

  8. 3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇

    http://www.cnblogs.com/wangchengfeng/p/3470310.html

  9. Selenium-java-TestNg-的运行

    package com.day.www; import org.testng.annotations.AfterClass;import org.testng.annotations.AfterMet ...

  10. [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】

    1.添加时间监听: Chrom中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target ...