// 将地图相关的变量和函数提升到全局作用域
let map = null;
let marker = null;
let infoWindow = null;
// 地图数据配置
const mapData = {
address: {
zh: '广东省深圳市南山区高新中三道2号软件园一期7栋303室',
en: ''
},
companyName: {
zh: '深圳驭鑫科技有限公司',
en: ''
},
phone:{
zh: '13420976989',
en: '+86 13420976989'
},
contactInfo: {
zh: {
address: '地址',
phone: '电话',
email: '邮箱'
},
en: {
address: 'Address',
phone: 'Phone',
email: 'Email'
}
}
};
// 创建信息窗体内容
function createInfoWindowContent(lang) {
return `
${mapData.companyName[lang]}
${mapData.contactInfo[lang].address}:${mapData.address[lang]}
${mapData.contactInfo[lang].email}:zmz@yxsilicon.com
`;
}
// 更新地图信息
function updateMapInfo(lang) {
if (marker && infoWindow) {
// 更新标记标题
marker.setTitle(mapData.companyName[lang]);
// 更新信息窗体内容
infoWindow.setContent(createInfoWindowContent(lang));
// 如果信息窗体是打开状态,重新打开以更新内容
if (infoWindow.getIsOpen()) {
infoWindow.open(map, marker.getPosition());
}
}
}
// 初始化地图
function initAMap() {
try {
// 获取当前语言
const currentLang = window.currentLang || localStorage.getItem('siteLang') || "zh";
// 先加载所需插件
AMap.plugin(['AMap.Geocoder', 'AMap.ToolBar', 'AMap.Scale'], function() {
const geocoder = new AMap.Geocoder({
city: "深圳",
radius: 1000
});
geocoder.getLocation(mapData.address.zh, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
const lnglat = result.geocodes[0].location;
// 创建地图实例
map = new AMap.Map('mapContainer', {
zoom: 16,
center: [lnglat.lng, lnglat.lat],
viewMode: '3D',
resizeEnable: true,
pitch: 40,
mapStyle: 'amap://styles/normal'
});
// 创建标记
marker = new AMap.Marker({
position: [lnglat.lng, lnglat.lat],
title: mapData.companyName[currentLang],
animation: 'AMAP_ANIMATION_DROP',
offset: new AMap.Pixel(-13, -30)
});
map.add(marker);
// 创建信息窗体
infoWindow = new AMap.InfoWindow({
content: createInfoWindowContent(currentLang),
offset: new AMap.Pixel(0, -30),
closeWhenClickMap: true
});
// 地图加载完成后打开信息窗体
map.on('complete', function() {
infoWindow.open(map, [lnglat.lng, lnglat.lat]);
});
// 点击标记时打开信息窗体
marker.on('click', function() {
infoWindow.open(map, marker.getPosition());
});
// 添加控件
map.addControl(new AMap.ToolBar({
position: 'RB'
}));
map.addControl(new AMap.Scale());
// 确保标记点居中显示
map.setFitView([marker]);
// 响应式处理
window.addEventListener('resize', function() {
map.resize();
map.setCenter([lnglat.lng, lnglat.lat]);
});
} else {
console.error('地址解析失败:', result);
const mapContainer = document.getElementById('mapContainer');
if (mapContainer) {
mapContainer.innerHTML =
'