Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2003533
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: C/C++

2012-01-15 14:13:08

我采用的方式比较笨,是直接修改地图的html文件中设定坐标的语句,将坐标值进行修改,保存。再重新打开网页文件。
html文件的源代码如下:
    "">

 
   
    Google map JavaScript API eg: map mark
   
   
 
 
   

 
下面对结果重要的部分进行说明:
1、var map = new GMap2(document.getElementById("map_canvas"));//*
这里的‘*’很重要,因为下面在vc中也是通过定位到‘*’字符,最后成功定位到map.setCenter(new GLatLng(31.0326,113.7972),14);这句话,最后成功修改坐标值项。达到打开定点地图界面的作用。
2、vc中初始化时,地图文件的载入
m_map.Navigate(_T(");
由于事先是将Google-earth.html文件是存放在D盘的根目录下,所以这里的路径这样设置。
3、点击按钮1切换到坐标点1区域
void Cgoogle_mapDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码、
 char sRead[3000];
 char new_pos[]="30.3323,112.2029";
 char s_search1='*';
 //读地图文件到缓冲区中
 CFile mfile(_T("D:\Google-earth.html"),CFile::modeRead);
 if (mfile.GetLength()<2)
 {
  return;
 }
    int f_size=mfile.GetLength();
 mfile.Read(sRead,f_size);
 mfile.Close();
    //修改缓冲区中的坐标数据
 for(int i=0;i {
  if (sRead[i]=='*')
  {
   m_length=i;
   for (int j=0;j<14;j++)
   {
    sRead[i+37+j]=new_pos[j];
   }
  }
 }
   
 //写地图文件
 CFile mfile1(_T("D:\\Google-earth.html"),CFile::modeWrite);
 mfile1.Write(sRead,f_size);
 mfile1.Flush();
 mfile1.Close();
 //重新打开地图
 m_map.Navigate(_T("
);
 UpdateData(FALSE);
}
4、点击按钮2,切换到地图坐标点2
void Cgoogle_mapDlg::OnBnClickedButton2()
{
 // TODO: 在此添加控件通知处理程序代码、
 char sRead[10000];
 char new_pos[]="31.0326,113.7972";
 char s_search1='*';
 //读地图文件到缓冲区中
 CFile mfile(_T("D:\Google-earth.html"),CFile::modeRead);
 if (mfile.GetLength()<2)
 {
  return;
 }
 int f_size=mfile.GetLength();
 mfile.Read(sRead,f_size);
 mfile.Close();
 //修改缓冲区中的坐标数据
 for(int i=0;i {
  if (sRead[i]=='*')
  {
   m_length=i;
   //sRead[i+26+11]='4';
   for (int j=0;j<14;j++)
   {
    sRead[i+37+j]=new_pos[j];
   }
  }
 }
 //写地图文件
 CFile mfile1(_T("D:\\Google-earth.html"),CFile::modeWrite);
 mfile1.Write(sRead,f_size);
 mfile1.Flush();
 mfile1.Close();
 //重新打开地图
 m_map.Navigate(_T("
);
}
最后关于地图中可选择的一些基本的组件的使用说明
(1)比例尺组件、
 //add bi li chi
 var customUI = map.getDefaultUI();
 customUI.maptypes.hybrid = true;
 map.setUI(customUI);
2)指定坐标点的标记组件
 //add mark point
 var point = new GLatLng(31.0326,113.7972);
 map.addOverlay(new GMarker(point));
(3)其他嵌入图层(eg:维基百科)
 var myLayer = new GLayer("org.wikipedia.en");
 map.addOverlay(myLayer);
(4)消息提示框组件
 map.openInfoWindow(map.getCenter(),document.createTextNode("gu gong"));
(5)放大缩小组件
  map.addControl(new GLargeMapControl());
  //map.addControl(new GSmallMapControl());
上面的是两种大小的地图缩放组件,可任选其一。
(6)设置地图的中心点
 var map = new GMap2(document.getElementById("map_canvas"));//*
 map.setCenter(new GLatLng(31.0326,113.7972),14);
就讲这么多,其他的有待进一步的学习!
效果如如下:
上传exe文件如下:
上传地图文件如下:
下载后,先将后缀名改为7z然后解压。
阅读(9605) | 评论(9) | 转发(0) |
0

上一篇:涂鸦

下一篇:stm32时钟分析

给主人留下些什么吧!~~

sesslight2014-03-11 20:51:09

你好,我参考你的自己编了一个,地图成功了,非常有帮助!!


可能是我html脚本不太会,
编那个点击按钮1切换到坐标点1区域时,那个m_length是什么变量,在哪声明的呢?
lz那个下载还能再传一个吗

number007cool2012-02-07 13:14:37

工程有点大。
你可以新建一个基于对话框的工程,然后添加一个webbrowser。
通过webbrowser打开存放在指定路径下的html文件(该html的源代码上面有)。

YanxiWu2012-02-01 23:04:28

能否把工程文件发一份给小弟学习一下,谢谢!
邮箱:2755008@qq.com

十七岁的回忆2012-01-17 21:56:01

哇塞!VC已经强大到能修改google地图啦?!!!