markerclusterer无法运行php mysql json
需要工作标记聚类器。 我举几个例子 这对我不起作用 我的源代码markerclusterer无法运行php mysql json,php,mysql,api,google-maps,markerclusterer,Php,Mysql,Api,Google Maps,Markerclusterer,需要工作标记聚类器。 我举几个例子 这对我不起作用 我的源代码 var buildings_map = <?php echo json_encode( $buildings_map ) ?>; var infobox = new google.maps.InfoWindow(); var bounds = new google.maps.LatLngBounds(); function setMarker(building) { var latlng = new google.
var buildings_map = <?php echo json_encode( $buildings_map ) ?>;
var infobox = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
function setMarker(building) {
var latlng = new google.maps.LatLng(parseFloat(building.lat), parseFloat(building.lng));
console.log(latlng);
bounds.extend(latlng);
var buildingMarkers = new google.maps.Marker({
position: {lat: parseFloat(building.lat), lng: parseFloat(building.lng)},
map: map,
title: building.name
});
markerCluster = new MarkerClusterer(map, buildingMarkers);
google.maps.event.addListener(buildingMarkers, 'click', function () {
infobox.close();
infobox.setContent(building.content);
infobox.open(map, buildingMarkers);
});
google.maps.event.addListener(infobox, 'domready', function () {
var iwOuter = $('.gm-style-iw');
var建筑图=;
var infobox=new google.maps.InfoWindow();
var bounds=new google.maps.LatLngBounds();
功能设置标记(建筑物){
var latlng=新的google.maps.latlng(parseFloat(building.lat)、parseFloat(building.lng));
控制台日志(latlng);
边界扩展(latlng);
var buildingMarkers=new google.maps.Marker({
位置:{lat:parseFloat(building.lat),lng:parseFloat(building.lng)},
地图:地图,
标题:building.name
});
markerCluster=新的MarkerClusterer(地图、建筑标记);
google.maps.event.addListener(buildingMarkers,'click',函数(){
infobox.close();
infobox.setContent(building.content);
打开(地图、建筑标记);
});
google.maps.event.addListener(信息框,'domready',函数(){
var-iwOuter=$('.gm-style-iw');
您正在setMarker函数中创建markerClusterer。它将继续为每个建筑标记重新初始化markerClusterer
将markerClusterer创建移到for循环之后。我还将setMarker函数移到initMap函数之外
您可以在脚本和测试中替换以下代码
<script>
var markersArray = new Array();
function initMap() {
var centerMap = <?php echo json_encode( $centerMap ) ?>;
var map = new google.maps.Map(document.getElementById('map-imoveis'), {
zoom: 4,
center: {lat: parseFloat(centerMap.lat), lng: parseFloat(centerMap.lng)},
zoomControl: true,
language: 'pt-br'
});
var buildings_map = <?php echo json_encode( $buildings_map ) ?>;
var infobox = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
for (building in buildings_map) {
if (buildings_map.hasOwnProperty(building)) {
setMarker(buildings_map[building]);
}
console.log(buildings_map[building]);
}
// J - CREATE MARKER CLUSTER USING THE MARKERS ARRAY
var markerCluster = new MarkerClusterer(map, markersArray, {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
if (bounds.getNorthEast().equals(bounds.getSouthWest())) {
var extendPoint1 = new google.maps.LatLng(bounds.getNorthEast().lat() + 0.01, bounds.getNorthEast().lng() + 0.01);
var extendPoint2 = new google.maps.LatLng(bounds.getNorthEast().lat() - 0.01, bounds.getNorthEast().lng() - 0.01);
bounds.extend(extendPoint1);
bounds.extend(extendPoint2);
}
map.fitBounds(bounds);
}
function setMarker(building) {
var latlng = new google.maps.LatLng(parseFloat(building.lat), parseFloat(building.lng));
console.log(latlng);
bounds.extend(latlng);
var buildingMarkers = new google.maps.Marker({
position: {lat: parseFloat(building.lat), lng: parseFloat(building.lng)},
map: map,
title: building.name
});
// J - ADD MARKER TO THE ARRAY.
markersArray.push(marker);
google.maps.event.addListener(buildingMarkers, 'click', function () {
infobox.close();
infobox.setContent(building.content);
infobox.open(map, buildingMarkers);
});
google.maps.event.addListener(infobox, 'domready', function () {
var iwOuter = $('.gm-style-iw');
iwOuter.css({ 'left': '0', 'width': '100%' });
var iwBackground = iwOuter.prev();
iwBackground.parent().css({'width': '330px'});
iwBackground.children(':nth-child(2)').css({
'background-color': 'transparent', 'box-shadow': 'none'
});
iwBackground.children(':nth-child(4)').css({
'background-color': 'transparent'
});
var iwX = iwOuter.next();
iwX.css({'right': '0', 'top': '15px'});
iwX.children().remove();
iwX.css({ 'width': '28px', 'height': '28px' }).append('<span style="color: #b22c2c; font-size: 22px;"><i class="rimo rimo-close">X</span>');
iwBackground.children(':nth-child(3)').children(':first-child').children(':first-child').css({'background-color': '#fff', 'z-index': '1000', 'display': 'none', 'box-shadow': 'none'});
iwBackground.children(':nth-child(3)').children(':last-child').children(':first-child').css({'background-color': '#fff', 'z-index': '1000', 'display': 'none', 'box-shadow': 'none'});
});
}
</script>
var markersArray=新数组();
函数initMap(){
var centerMap=;
var map=new google.maps.map(document.getElementById('map-imovis'){
缩放:4,
中心:{lat:parseFloat(centerMap.lat),lng:parseFloat(centerMap.lng)},
动物控制:对,
语言:“pt br”
});
var_map=;
var infobox=new google.maps.InfoWindow();
var bounds=new google.maps.LatLngBounds();
用于(建筑中的建筑\u地图){
if(建筑物\u地图hasOwnProperty(建筑物)){
SETMAKER(建筑物和地图[建筑物]);
}
控制台日志(建筑物地图[建筑物]);
}
//J-使用标记数组创建标记簇
var markerCluster=new MarkerClusterer(映射,markersArray,{imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
如果(bounds.getNorthwest().equals(bounds.getSouthWest())){
var extendPoint1=new google.maps.LatLng(bounds.getNorthEast().lat()+0.01,bounds.getNorthEast().lng()+0.01);
var extendPoint2=new google.maps.LatLng(bounds.getNorthEast().lat()-0.01,bounds.getNorthEast().lng()-0.01);
扩展(扩展点1);
扩展(扩展点2);
}
映射边界(bounds);
}
功能设置标记(建筑物){
var latlng=新的google.maps.latlng(parseFloat(building.lat)、parseFloat(building.lng));
控制台日志(latlng);
边界扩展(latlng);
var buildingMarkers=new google.maps.Marker({
位置:{lat:parseFloat(building.lat),lng:parseFloat(building.lng)},
地图:地图,
标题:building.name
});
//J-将标记添加到数组中。
markersArray.push(marker);
google.maps.event.addListener(buildingMarkers,'click',函数(){
infobox.close();
infobox.setContent(building.content);
打开(地图、建筑标记);
});
google.maps.event.addListener(信息框,'domready',函数(){
var-iwOuter=$('.gm-style-iw');
css({'left':'0','width':'100%});
var iwBackground=iwOuter.prev();
css({'width':'330px'});
iwBackground.children(“:n个child(2)”).css({
“背景色”:“透明”,“框阴影”:“无”
});
iwBackground.children(“:n个child(4)”).css({
“背景色”:“透明”
});
var iwX=iwOuter.next();
css({'right':'0','top':'15px'});
iwX.children().remove();
css({'width':'28px','height':'28px'});
iwBackground.children(':nth child(3')).children(':first child').children(':first child').css({'background-color':'#fff','z-index':'1000','display':'none','box shadow':'none');
iwBackground.children(':nth child(3')).children(':last child').children(':first child').css({'background-color':'#fff','z-index':'1000','display':'none','box shadow':'none');
});
}
请提供一个在问题本身中说明您的问题的链接,而不是(仅)指向外部站点的链接(最好是正在工作的StackOverflow代码段)好的。我已编辑。请帮助我..错误:未捕获(承诺中)ReferenceError:js?key=aizasyblzvmdnmozqs7xlz3hsecsqrjomkudlc&callback=initMap&language=pt br:123在js?key=aizasyblzvmdnmozqs7xlz3hsecsqrjomkudlc&callback=initMap&language=pt br:123的initMap上没有定义标记。请提供示例数据(buildings\u map
)和有效的javascript;因此,您的问题中有一个问题。(问题中只有23行,第123行是什么?)我有很长的代码..不可能在这里发布..stackoverflow not permit.hi guy ty寻求帮助..错误:未捕获Kc{消息:“不是LatLng或LatlInTerral:在属性lat:不是数字”,名称:“InvalidValueError”,堆栈:“error”↵ 在新的Kc(…maps-api-v3/api/js/36/2/intl/pt_br/map.js:36:350)”在控制台中打印building.lat
和building.lng
的值,以检查您是否获得了正确的值。如果它们不是数字,则parseFloat
方法将抛出一个错误。Hi guy,智能手机工作正常。但在计算机不工作的情况下,会出现此错误,这是什么?您是否检查了检查发送到智能手机控制台的building.lat
和building.lng
的值。日志(building.lat,building.lng)结果….-22.903500-43.209621-22.953388-43.078121-22.977592-43.191483-22.877958-42.028561-22.406187-41.802307。。。。。