我想做一个需要集成谷歌地图api的项目。我需要自动完成,本地化并在地图上画一条路线。我怎么能用angular做到这一点,你能为我推荐一个图书馆吗?或者我如何使用javascript的谷歌地图api来实现这一点。这个项目是使用yeoman fullstack生成的。
谢谢。
首先,如果您想使用AngularJS获得Google Maps API,您有两种解决方案:
- 从头开始使用谷歌地图API
- 使用角度谷歌地图
我将向你展示如何让它从零开始变得简单。
这是一个简单的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个位置、标记等之间的路线,你应该看看:
- 谷歌地图API文档
- 这个答案来自@geocodezip
- 这是@Gurpeet Singh的回答
- 这是@zeeshan0026的回答
最后,您可以查看这个由@Shrerang Patwardhan使用Polyline(您长期想要的路线)制作的工作JSFiddle。
对于未来的实现,请确保将myMaps.js指令放在一个单独的文件中,在应用程序模块中注入它有一个依赖项以便获得DRY(不要重复自己)和可维护应用程序,使用与涉及谷歌地图的Angular应用程序的起点相同的工作指令。例如,您只需更改坐标或添加一些新地图选项,即可启动未来需要谷歌地图的应用程序。
你应该得到这样的东西:
myApp.directive("myMap", function(){ . . . }); //Goes in a Separated File
var myApp = angular.module("myApp",['myMaps']); //Dependency Injection
我希望我能帮上忙。
您可以使用Angular谷歌地图。Angular Google Maps是一组用CoffeeScript和Javascript编写的指令(Angular ui的一部分),将Google Maps集成到AngularJS应用程序中。当然,还有许多其他的指令可以达到这个目的。
https://angular-ui.github.io/angular-google-maps/