当前位置: 首页 > 面试题库 >

带有角的Google地图

陆宾白
2023-03-14
问题内容

我想做一个需要集成Google MapsAPI的项目。我需要自动完成,本地化并在地图上绘制路线。我该如何用angular做到这一点,您可以为此推荐一个库吗?或者我该如何使用html" target="_blank">javascript的GoogleMapsAPI做到这一点。该项目是使用yeoman-fullstack生成的。

谢谢。


问题答案:

首先,如果您想让 AngularJS使用* Google Maps API ,则有两种解决方案: *

  • 从头开始使用Google Maps API
  • 使用Angular-Google-Maps

我将向您展示如何从头开始。

这是一个简单的AngularJS应用程序的示例,该应用程序仅旨在学习使用此类API。我做了这个小AngularJS练习,以便在更大的应用程序中使用它。

Index.html:

<html ng-app="myApp"> <!--Your App-->
  <head>
    <title>AngularJS-Google-Maps</title>
    <link rel="stylesheet" href="style.css">
    <script src="../lib/angular.min.js"></script>
    <script src="app.js"></script>

    <!-- You have to look for a Maps Key, you can find it on Google Map            
         Api's website if you pay a bit of attention-->
    <script type="text/javascript"
            src="https://maps.googleapis.com/maps/api/js?key=
       YourKey&sensor=false">
    </script>

  </head>
  <body>
    <!--Custom directive my-maps, we will get our map in here-->
    <my-maps id="map-canvas"></my-maps>

  </body>
</html>

app.js:

var myApp = angular.module("myApp",[]);

//Getting our Maps Element Directive
myApp.directive("myMaps", function(){
    return{
        restrict:'E', //Element Type
        template:'<div></div>', //Defining myApp div
        replace:true, //Allowing replacing
        link: function(scope, element, attributes){

            //Initializing Coordinates
            var myLatLng = new google.maps.LatLng(YourLat,YourLong); 
            var mapOptions = {
                center: myLatLng, //Center of our map based on LatLong Coordinates
                zoom: 5, //How much we want to initialize our zoom in the map
                //Map type, you can check them in APIs documentation
                mapTypeId: google.maps.MapTypeId.ROADMAP 
                };

            //Attaching our features & options to the map
            var map = new google.maps.Map(document.getElementById(attributes.id),
                          mapOptions);
            //Putting a marker on the center
            var marker = new google.maps.Marker({
                position: myLatLng,
                map: map,
                title:"My town"
            });
            marker.setMap(map); //Setting the marker up
        }   
    };
});

style.css:

//Just giving our container Height and Width + A Red border
#map-canvas{
        height: 400px;
        width:  700px;
        border: 2px solid red;
}

那只是开始它的一种非常基本的方法,即使您确实应该在AngularJS中使用它们,我什至没有使用控制器。

这是我忍受此代码的工作Plunk。

您可以通过许多不同的方式使用Google Maps API,只需查看文档或StackOverflow上的此处。

现在,如果要管理2个位置,标记等之间的路线,则应查看:

  • Google Maps API文档

并且,最后,您可以使用Polylines(您想要的长途路线)检查@Shreerang
Patwardhan制造的此JSFiddle。

对于将来的实现,请确保将myMaps.js指令放在单独的文件中,并 在应用模块中注入它具有依赖性,
以便使用与启动点相同的工作指令获取DRY(请勿重复自己)和可维护的应用程序您的涉及Google
Maps的Angular应用程序。例如,您将能够只更改坐标或添加一些新地图选项来启动需要Google Maps的未来应用程序。

您应该得到类似以下内容:

myApp.directive("myMap", function(){ . . . }); //Goes in a Separated File

var myApp = angular.module("myApp",['myMaps']); //Dependency Injection

希望对您有所帮助。



 类似资料:
  • 问题内容: 这是进入一个位置时可以得到纬度和经度的代码。我相信我的代码是我所知。但是进入一个位置后,我得到了空白页。 这是代码: 问题答案: 您正在尝试在此处使用JSONP。 JSONP 如果URL包含字符串“ callback =?” (或类似,由服务器端API定义),则将request>视为JSONP。有关更多详细信息,请参见$ .ajax()中有关jsonp数据类型的讨论。 重要提示:从jQ

  • 问题内容: 我需要使我的Google Map V3变成一个完整的圆圈。我在其上使用CSS3边界半径,但仅在Firfox中可正常使用,其他人则将其保留为矩形。以下是代码: 和CSS: 是的,我知道,我可以使用一些具有背景色的叠加图像。但是真正的问题是背景不仅是彩色的。它根据其内容而变化,通常是一个渐变。有没有办法使Chrome和其他基于wabkit的浏览器和Opera(我对IE没有希望)以与FF相同

  • 我有一个图像,我想覆盖在地图上的特定位置,看起来像当前静态地图图像服务没有提供任何参数传递。

  • 但它不适用于以下内容:https://maps.googleapis.com/maps/api/directions/json?origin=32,52&destination=34,54&key=aizasybvr07afm-1ddgvgt392lrnuge3wet6nuy

  • 问题内容: 两者之间到底有什么区别 和 第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗? 问题答案: 第二种形式总是创建一个空的地图。 第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图: 现在,您的(通用)示例: 是没有初始值(键/值对)的地图文字。它完全等同于: 此外,这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例: 将创建一个地图,该地图具有足够的空间来容

  • 问题内容: 我试图通过使用Spannable String来更改我的字符串,使其中间带有数字的徽章。我可以通过设置BackGroundColorSpan突出显示适当的字母/数字,但是需要一些帮助使其更加漂亮。我希望圆角周围有一些填充物。 本文确实与我要执行的操作非常接近:AndroidSpannableString将背景设置为文本的一部分 由于资源与应用程序的交互方式,我确实需要将资源保留为Tex