大众点评的LBS服务是怎么完成的?是用手机里面自带的吗?java程序员能直接完成这些功能吗?

大众点评的LBS服务是怎么完成的?是用手机里面自带的吗?java程序员能直接完成这些功能吗?,第1张

你们用什么大众点评啊.推荐你们使用51地图或者google map的API啊,java程序员可以直接通过使用这两个平台的API来进行编码定位的。

你的第一个问题:LBS一般有两种方式,第一种是通过GPS卫星导航系统。现在的智能手机(Android,苹果,黑梅等等)都自带有GPS卫星接收器,能够时时获取位置信息。不过GPS要在室外使用,而且容易受天气的影响,不过精度还算高。 第二种是通过移动通信基站来进行定位的,也就是通过离你的手机最近的基站来确定你的位置(HTTP通信),这种定位方式比较稳定,但是精度太低,一般的误差高达1000米。

第二个问题:手机里面有GPS接收器,你们去找一个android软件工程师,叫他帮你们做一个这样的软件,很简单的

第三个问题:程序员当然可以完成功能啦 。

你的附加问题:GPS定位的误差一般很小。 如果一个人拿着手机在路上走,假设他用的是GPS定位,那么GPS接收器每隔一段时间(如果要时时定位,那么间隔就非常小,零点几秒就要获取一次)就要刷新一次经纬度,这样这个人的位置就会时时在手机上反映。 如果他用的是基站定位,那么就是利用HTTP通信,必须与服务器进行稳定的连接,时时向服务器发送请求,接收服务器的反馈信息,这样位置就会在屏幕上刷新。

(注:本人乃LBS位置服务开发工程师)

因为你使用了BufferedReader的readLine方法,这个方法要读取到换行符才会停止阻塞。所以要在所有write的字符串末尾加上换行符("\r\n")

最后帮你改得:

服务器端:

import java.io.BufferedReader

import java.io.BufferedWriter

import java.io.IOException

import java.io.InputStreamReader

import java.io.OutputStreamWriter

import java.net.ServerSocket

import java.net.Socket

import java.util.ArrayList

import java.util.List

public class Server extends Thread{

Socket s = null

public static List<Chat>chats = new ArrayList<Chat>()

public static void main(String[] args) {

new Server().start()

}

public void run() {

try {

// 指定端口开始监听

ServerSocket ss = new ServerSocket(3456)

// 阻塞并接受客户端连接请求

while (true) {

s = ss.accept()

Chat chat = new Chat(s)

// 每接收一个客户端就起一个单独的聊天线程

new Thread(chat).start()

chats.add(chat)

System.out.println("Join a client thread!")

System.out.println("Current client thread amount: " + chats.size())

}

} catch (IOException e) {

e.printStackTrace()

}

}

}

// 聊天线程

class Chat implements Runnable {

BufferedReader br = null

BufferedWriter bw = null

Socket s = null

public Chat(Socket s) {

this.s = s

try {

br = new BufferedReader(new InputStreamReader(s.getInputStream()))

bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()))

} catch (Exception e) {

e.printStackTrace()

}

}

// 将客户端发来的消息打印并重发回去

@Override

public void run() {

try {

String str = null

bw.write("hello")

bw.write("\r\n")

bw.flush()

while (true) {

if ((str = br.readLine()) != null) {

System.out.println("Client say: " + str)

bw.write(str)

bw.write("\r\n")

bw.flush()

}

}

} catch (IOException e) {

e.printStackTrace()

} finally {

try {

br.close()

bw.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

}

==============================

客户端:

import java.io.BufferedReader

import java.io.BufferedWriter

import java.io.IOException

import java.io.InputStreamReader

import java.io.OutputStreamWriter

import java.net.Socket

import java.net.UnknownHostException

import java.util.Scanner

public class Client implements Runnable {

Socket s = null

BufferedWriter write = null

BufferedReader read = null

Scanner input = new Scanner(System.in)

public static void main(String[] args) {

Client client = new Client()

client.start()

}

public void start() {

String str = null

try {

s = new Socket("127.0.0.1", 3456)

read = new BufferedReader(new InputStreamReader(s.getInputStream()))

write = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()))

new Thread(this).start()

//负责发送消息给服务端

while (true) {

str = input.next()

if (str.equalsIgnoreCase("bye")) {

break

}

write.write(str)

write.write("\r\n")

write.flush()

}

} catch (UnknownHostException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

} finally {

try {

write.close()

read.close()

s.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

//负责接收服务端的消息

@Override

public void run() {

String str = null

try {

while (true) {

str = read.readLine()

System.out.println("Client say:" + str)

}

} catch (IOException e) {

e.printStackTrace()

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11727217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存