Google maps API开发

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧   一、加载Google maps API 您可以到http://code.
原文: Google maps API开发

Google maps API开发(一)

最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧

 

一、加载Google maps API

<script type="text/javascript"

       src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

您可以到http://code.google.com/intl/zh-CN/apis/maps/signup.html注册申请自己的API

二、加载简单的Google地图

1、 加载Google地图

//声明一个GMap2全局变量

var map;

function load()

{

    //检查浏览器的兼容性.

    if (GBrowserIsCompatible())

    {

        map = new GMap2(document.getElementById("map")); //加载地图

        map.addControl(new GLargeMapControl()); //增加全功能控件

        map.addControl(new GMapTypeControl()); //设置地图类型

        map.enableScrollWheelZoom(); //设置地图支持滚轮

        map.setCenter(new GLatLng(39.990168, 116.295304), 10); //设置地图的中心坐标

        map.enableDoubleClickZoom(); //开启双击google map会自动放大.

        map.enableScrollWheelZoom(); //开启滚动鼠标自动放大和缩小.

          //

    }

}

2、 添加一个创建GMarker的方法

function createMarker(baseIcon, point, html)

{

    var icon = new GIcon(baseIcon);

    var marker = new GMarker(point, icon);

    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });

    return marker;

}

3、 调用这个GMarker方法

var icon = new GIcon(G_DEFAULT_ICON);

var point = new GPoint(116.429114, 39.934322);

var html = '<div ><font color="blue">HelloWorld</font></div>';

var marker = createMarker(icon, point, html);

map.addOverlay(marker);

这样一个简单的HelloWorld就显示出来了

通过这个例子我们可以了解到GMap2GMarkerGIcon这几个核心类的基本应用

最后看看我截得图:

 

源文件下载

每天进步一点点...

Google maps API开发(二)

这一篇主要实现怎么调用Google maps API中的地址解析核心类GClientGeocoder

主要功能包括地址解析、反向解析、本地搜索、周边搜索等,

我这里主要有两个实例:

实例一、当你搜索一个地名的时候,解析它的经纬度信息,并在地图上描点

实例二、搜索你的中心点所在区域的学校、商店等信息,并在地图上描点

首先来讲讲实例一怎么实现:

1、 加载google api

<script

type="text/javascript"src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

2、 定义通用的全局变量和公共方法

var map;//GMap2的核心对象

var geocoder = null;//用来解析的

var markers = new Array();//用来存放GMarker

//======在地图上描点的方法============

function createMarker(icon, point, html, index) {

    var letter = String.fromCharCode("A".charCodeAt(0) + index);

    icon.image = "http://ditu.google.com/mapfiles/marker" + letter + ".png";

    var marker = new GMarker(point, icon);

    GEvent.addListener(marker, "click", function() {

        marker.openInfoWindowHtml(html);

    });

    markers.push(marker);

    map.addOverlay(marker);

}

//查询点击事件

function showLocation() {

    map.clearOverlays();

    document.getElementById('divOutput').innerHTML = "搜索中...";

    var address = document.getElementById('txtAddress').value;

    geocoder.getLocations(address, cb_showLocation);//搜索的核心方法

}

//回调事件,主要在界面上描点和右侧产生列表信息

function cb_showLocation(result) {

    // 显示结果

    if (result.Status.code == G_GEO_SUCCESS)

    {

        document.getElementById("divOutput").innerHTML = "成功(" + result.Placemark.length + ")<br />";

        var icon = new GIcon(G_DEFAULT_ICON);

        var lat, lng, point, address, marker;

        for (var i = 0; i < result.Placemark.length; i++) {

            lat = result.Placemark[i].Point.coordinates[1]; // lat

            lng = result.Placemark[i].Point.coordinates[0]; // lng

            address = result.Placemark[i].address; // 地址

            point = new GLatLng(lat, lng);

            document.getElementById("divOutput").innerHTML += ((i + 1) + " " + address + " <small>" + point.toString() + "</small><br />");

            createMarker(icon, point, address, i);

        }

    }

    else {

        document.getElementById("divOutput").innerHTML = result.Status.code;

    }

}

3、 地图初始化

function init() {

    //检查浏览器的兼容性.

    if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map_canvas"));

        //设置地图的中心坐标.

        var loc = new GLatLng(39.990168, 116.295304);

        map.setCenter(loc, 5);

        //创建带有可在四个方向平移、放大、缩小的按钮,以及缩放滑块的控件。

        map.addControl(new GLargeMapControl());

        //创建带有切换地图类型的按钮的控件。

        map.addControl(new GMapTypeControl());

        //设置地图支持滚轮

        map.enableScrollWheelZoom();

        //实例化一个地址解析

        geocoder = new GClientGeocoder();

    }

}

4、 定义页面加载事件和卸载事件

window.onload = init;

window.onunload = GUnload;

//========主界面==================

<!-- 地图画板 -->

<input type="text" id="txtAddress" name="txtAddress" size="40" /><input type="button" value="查询" onclick="showLocation();" />

<div id="map_canvas" style="width: 600px; height: 500px ;float:left;"></div>

<div id="divOutput" style="float:left;" ></div>

//==============================

主要第一个例子就完成了,效果如下

实例二

1加载google api,这里用到三个

              <script   type="text/javascript" src="http://ditu.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

              <script type="text/javascript" src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA&hl=zh-CN"></script>

              <script type="text/javascript" src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js"></script>

2、通用核心类、全局变量和公共方法

var map;

var hasMarker = false;

var markers = new Array();

var KMapSearch = window.KMapSearch = function(map_, opts_)

{

    this.opts = { keyWord: opts_.keyWord || "", latlng: opts_.latlng || new GLatLng(31, 121), autoClear: opts_.autoClear || true, icon: opts_.icon || new GIcon(G_DEFAULT_ICON) };

    this.map = map_;

    this.gLocalSearch = new google.search.LocalSearch();

    this.gLocalSearch.setCenterPoint(this.opts.latlng);

    this.gLocalSearch.setResultSetSize(GSearch.LARGE_RESULTSET);

    this.gLocalSearch.setSearchCompleteCallback(this, myTips);

}

//请除所有查询结果

KMapSearch.prototype.clearAll = function() {

    for (var i = 0; i < markers.length; i++) { this.map.removeOverlay(markers[i]); }

    markers.length = 0;

}

//开始查询

KMapSearch.prototype.execute = function(latLng) {

    if (latLng) { this.gLocalSearch.setCenterPoint(latLng); }

    this.gLocalSearch.execute(this.opts.keyWord);

}

//取得查询结果,并以DIV的方式展示

KMapSearch.prototype.getResult = function(result, i) {

    var container = document.createElement("div");

    container.className = "list";

    var myRadom = (new Date()).getTime().toString() + Math.floor(Math.random() * 10000);

    container.id = myRadom;

    container.innerHTML = i + "" + result.title + "<br />地址:" + result.streetAddress;

    //this.createMarker(new GLatLng(result.lat, result.lng), result.html, myRadom);

    return container;

}

3、载入事件和辅助方法

//载入

function OnLoad() {

    if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map_canvas"));

        map.addControl(new GLargeMapControl());

        map.addControl(new GMenuMapTypeControl());

        map.addControl(new GOverviewMapControl());

        map.enableScrollWheelZoom();

        map.setCenter(new GLatLng(39.990168, 116.295304), 10);

        //添加右键单击事件

        GEvent.addListener(map, "singlerightclick", function(point) {

            var initPt = map.fromContainerPixelToLatLng(point);

            map.clearOverlays();

            marker = new GMarker(initPt, { draggable: true });

            if (hasMarker) {

                marker.setLatLng(initPt);

                map.panTo(initPt);

            }

            else {

                //拖拽事件

                GEvent.addListener(marker, "dragend", function() {

                    initPt = marker.getLatLng();

                    map.panTo(initPt);

                    searchMap(initPt);

                });

                hasMarker = true;

            }

            map.addOverlay(marker);

            searchMap(initPt);

        });

    }

}

//点击提示信息

function myTips() {

    var content = "";

    var resultdiv = document.getElementById("map");

    for (j = 0; j < markers.length; j++) {

        map.removeOverlay(markers[j]);

    }

    markers.length = 0;

    var results = this.gLocalSearch.results;

    var icon = new GIcon(G_DEFAULT_ICON);

    var savedResults = document.getElementById("schollContainer");

    if (this.gLocalSearch.results)

    {

        if (this.opts.autoClear) {

            savedResults.innerHTML = "";

        }

        for (var i = 0; i < results.length; i++) {

            content = '<p>' + '名称:' + results[i].title + '<br />' + '地址:' + results[i].streetAddress + '<br />' + '坐标:' + results[i].lat + ',' + results[i].lng + '</p>';

            myCreateMarker(new GPoint(results[i].lng, results[i].lat), icon, content, i);

            savedResults.appendChild(this.getResult(this.gLocalSearch.results[i], i + 1));

        }

    }

}

//地图上标注

function myCreateMarker(point, icon, html, index) {

    var letter = String.fromCharCode("A".charCodeAt(0) + index);

    icon.image = "http://ditu.google.com/mapfiles/marker" + letter + ".png";

    var marker = new GMarker(point, icon);

    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });

    markers.push(marker);

    map.addOverlay(marker);

}

//在给定的坐标附近搜索指定的关键字

function searchMap(initPt) {

    var myIcon = new GIcon(G_DEFAULT_ICON);

    var mapSearch = new KMapSearch(map, { latlng: initPt, icon: myIcon, keyWord: "驾校" });

    mapSearch.clearAll();

    mapSearch.execute();

}

5、 最后

window.onload = OnLoad;

window.onunload = GUnload;

//========主界面==================

<!-- 地图画板 --> 

<div id="map_canvas" style="width:640px; height:480px ;float:left;"></div>

<div style="width:4px; height:480px ;float:left;"></div>

<div id="searchResult">驾校:<div id="schollContainer"></div></div>

//==============================

搞定, 最后的效果如图:

 

 源码实例下载

每天进步一点点...

目录
相关文章
告别重复繁琐!Apipost参数描述库让API开发效率飙升!
在API开发中,重复录入参数占用了42%的时间,不仅效率低下还易出错。Apipost推出的参数描述库解决了这一痛点,通过智能记忆功能实现参数自动填充,如版本号、分页控制、用户信息等常用字段,大幅减少手动输入。支持Key-Value与Raw-Json格式导入,一键提取响应结果至文档,将创建20参数接口文档时间从18分钟缩短至2分钟。相比Postman需手动搜索变量,Apipost的参数复用响应速度仅0.3秒,且支持跨项目共享与实时纠错,真正实现“一次定义,终身受益”。
API 接口开发与合理利用:构建高效、安全、可维护的数字桥梁
本文全面解析API接口的设计、优化与安全维护。API作为系统间交互的标准化契约,核心价值在于解耦系统、提升复用性和构建开放生态。设计时需遵循六大原则:明确输入输出、关注单一职责、实现自我表达、确保功能无重叠、保障幂等性及合理版本化。性能优化从批量处理、异步调用、并行执行等方面入手,同时结合缓存、池化技术和SQL优化提升效率。安全性涵盖加密传输、加签验签、Token认证、防重放攻击及限流熔断等十大要点。最后,通过文档自动生成、日志体系和版本管理确保接口可持续迭代。优秀的API应以契约优先、演进思维和防御心态为核心,成为系统的数字资产,支持内外部高效协作与生态建设。
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
2月前
|
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
118 15
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
2025年API开发必备:10款优秀Postman替代工具大盘点
API测试在现代开发中至关重要,Postman虽为首选,但市场上涌现出许多优秀替代工具。本文精选2025年10款好评如潮的API测试工具:Apifox、Insomnia、Hoppscotch、Paw、Talend API Tester、HTTPie、ARC、Swagger UI、SoapUI和Thunder Client。这些工具各具特色,满足不同需求,如团队协作、开源易用、自动化测试等。无论是简洁轻量还是功能全面,总有一款适合你的团队,助力效率提升。
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离开发中,API调试至关重要。本文探讨有无调试工具时如何高效调试API,重点分析Postman、Swagger等工具优势及无工具代码调试方法。通过实际场景如用户登录接口,对比两者特性。同时介绍Apipost-Hepler(IDEA插件),将可视化与代码调试结合,提供全局请求头配置、历史记录保存等功能,优化团队协作与开发效率,助力API调试进入全新阶段。
鸿蒙相机开发实战:从设备适配到性能调优 —— 我的 ArkTS 录像功能落地手记(API 15)
本文分享鸿蒙相机开发经验,从环境准备到核心逻辑实现,涵盖权限声明、模块导入、Surface关联与分辨率匹配,再到录制控制及设备适配法则。通过实战案例解析,如旋转补偿、动态帧率调节和编解码优化,帮助开发者掌握功能实现、设备适配与体验设计三大要点,减少开发坑点。适合鸿蒙新手及希望深化硬件交互能力的工程师参考收藏。
101 2
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
69 5
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等