Foursquare Map没有't在OnsenUI标记中渲染
Foursquare Map doesn't render in OnsenUI tags
我目前正在编写一个应用程序,需要从foursquare中显示地图。我用简单的html进行了测试,它运行得很好。但当我试图嵌入OnsenUI标签时,它变成了白色的空白页。守则如下。
Javascript
ons.ready(function() {
navigator.geolocation.getCurrentPosition(function(data) {
var lat = data['coords']['latitude'];
var lng = data['coords']['longitude'];
/* Create map. */
L.mapbox.accessToken = 'sometokenhere';
var map = L.mapbox.map('map', 'myname.myid').setView([lat, lng], 15);
//map.attributionControl.addAttribution('<a href="https://foursquare.com/">Places data from Foursquare</a>');
// Create a Foursquare developer account: https://developer.foursquare.com/
// NOTE: CHANGE THESE VALUES TO YOUR OWN:
// Otherwise they can be cycled or deactivated with zero notice.
var CLIENT_ID = 'something';
var CLIENT_SECRET = 'somewhere';
// https://developer.foursquare.com/start/search
var API_ENDPOINT = 'https://api.foursquare.com/v2/venues/search' +
'?client_id=CLIENT_ID' +
'&client_secret=CLIENT_SECRET' +
'&v=20130815' +
'&ll='+lat+','+lng+
'&query=food' +
'&callback=?';
// Keep our place markers organized in a nice group.
var foursquarePlaces = L.layerGroup().addTo(map);
$.getJSON(API_ENDPOINT
.replace('CLIENT_ID', CLIENT_ID)
.replace('CLIENT_SECRET', CLIENT_SECRET)
.replace('LATLON', map.getCenter().lat +
',' + map.getCenter().lng), function(result, status) {
if (status !== 'success') return alert('Request to Foursquare failed');
// Transform each venue result into a marker on the map.
for (var i = 0; i < result.response.venues.length; i++) {
var venue = result.response.venues[i];
var latlng = L.latLng(venue.location.lat, venue.location.lng);
var marker = L.marker(latlng, {
icon: L.mapbox.marker.icon({
'marker-color': '#BE9A6B',
'marker-symbol': 'cafe',
'marker-size': 'large'
})
})
.bindPopup('<strong><a href="https://foursquare.com/v/' + venue.id + '">' +
venue.name + '</a></strong>')
.addTo(foursquarePlaces);
}
});
});
});
标记
<div id="map"></div>
该代码运行良好,但
<script type="text/ons-template" id="detail.html">
<ons-navigator title="Navigator" var="myNavigator">
<ons-page>
<div id="map"></div>
</ons-page>
</script>
这个代码不起作用。你能给我一个解决问题的方法吗?谢谢
Onsen UI标记需要少量时间来解释和转换为html标记。因此,我认为脚本试图在html中嵌入地图,但Onsen UI标记尚未转换。不如尝试使用$timeout()来等待转换Onsen UI标记?您收到了什么错误信息?
我在Angular Controller中使用了它,并对$scope变量进行了变异。但如果我使用其他控制器,我也必须复制所有的东西。解决问题的清晰简洁的方法被写为服务并在控制器上注入。但我的解决方案只是在控制器中进行硬编码。
module.controller('RandomController',function($scope,$data){
navigator.geolocation.getCurrentPosition(function(data) {
var lat = data['coords']['latitude'];
var lng = data['coords']['longitude'];
L.mapbox.accessToken = 'Something';
var map = L.mapbox.map('map','youraccount');
map.setView([lat, lng], 13);
var CLIENT_ID = 'your_client_id';
var CLIENT_SECRET = 'your_client_secret';
var API_ENDPOINT = 'https://api.foursquare.com/v2/venues/search' +
'?client_id=' + CLIENT_ID+
'&client_secret='+CLIENT_SECRET +
'&v=20130815' +
'&ll='+lat+','+lng+
'&query=food' +
'&callback';
var foursquarePlaces = L.layerGroup().addTo(map);
$.getJSON(API_ENDPOINT
.replace('CLIENT_ID', CLIENT_ID)
.replace('CLIENT_SECRET', CLIENT_SECRET)
.replace('LATLON', map.getCenter().lat +',' + map.getCenter().lng), function(result, status) {
if (status !== 'success') return alert('Request to Foursquare failed');
// Transform each venue result into a marker on the map.
var venues = result.response.venues;
var shuffled_venues = shuffle(venues);
$scope.$apply(function(){
$scope.products = shuffled_venues;
});
for (var i = 0; i < result.response.venues.length; i++) {
var venue = result.response.venues[i];
var latlng = L.latLng(venue.location.lat, venue.location.lng);
var marker = L.marker(latlng, {
icon: L.mapbox.marker.icon({
'marker-color': '#BE9A6B',
'marker-symbol': 'cafe',
'marker-size': 'large'
})
})
.addTo(foursquarePlaces);
}
});
},function(error){
console.log(error.message);
},{
enableHighAccuracy: true
,timeout : 5000
});
});
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 我的jQuery插件参数没有正确启动,遇到了问题
- 视频HTML没有'无法在Internet Explorer 11上工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- angular.js没有'无法在PhoneGap中处理视图标记
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- JavaScript中的函数和对象之间没有区别吗?
- JSON.parse没有'不能使用Javascript
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Chrome扩展没有't在重新加载之前考虑期权价值
- 我的AngularJS表达式没有'不起作用
- Foursquare Map没有't在OnsenUI标记中渲染
- angularjs解析:OnsenUI列表没有被填充
- 当事件被触发时,PhoneGap和OnsenUI模态没有显示
- Jquery在onsenui的on -back按钮中没有触发点击事件